From 38eeda1fe6485cc479266e5d2994046e2ff9d17b Mon Sep 17 00:00:00 2001 From: unknown <654600784@qq.com> Date: Thu, 31 Mar 2022 14:18:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E4=B8=8D=E5=88=A0=E9=99=A4=E9=A1=B9=E7=9B=AE=E5=B1=82=E7=BA=A7?= =?UTF-8?q?=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ccsens/ptccsens/service/ImportService.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/ccsens/ptccsens/service/ImportService.java b/src/main/java/com/ccsens/ptccsens/service/ImportService.java index 520f5f3..b15ced3 100644 --- a/src/main/java/com/ccsens/ptccsens/service/ImportService.java +++ b/src/main/java/com/ccsens/ptccsens/service/ImportService.java @@ -326,12 +326,12 @@ public class ImportService implements IImportService { LabelBusinessExample labelBusinessExample = new LabelBusinessExample(); labelBusinessExample.createCriteria().andBusinessIdEqualTo(projectId); labelBusinessDao.updateByExampleSelective(labelBusiness,labelBusinessExample); - //删除项目的关联关系 - ProParentTask proParentTask = new ProParentTask(); - proParentTask.setRecStatus((byte) 2); - ProParentTaskExample proParentTaskExample = new ProParentTaskExample(); - proParentTaskExample.createCriteria().andTaskDetailIdEqualTo(projectId); - parentTaskMapper.updateByExampleSelective(proParentTask,proParentTaskExample); +// //删除项目的关联关系 +// ProParentTask proParentTask = new ProParentTask(); +// proParentTask.setRecStatus((byte) 2); +// ProParentTaskExample proParentTaskExample = new ProParentTaskExample(); +// proParentTaskExample.createCriteria().andTaskDetailIdEqualTo(projectId); +// parentTaskMapper.updateByExampleSelective(proParentTask,proParentTaskExample); } } //项目名不能重复(当前用户创建的项目内名字不能重复) From f90f3b2faccd18cb2a0012540be562eb07bc0ec5 Mon Sep 17 00:00:00 2001 From: unknown <654600784@qq.com> Date: Fri, 1 Apr 2022 18:14:01 +0800 Subject: [PATCH 2/2] =?UTF-8?q?20220401=E4=BF=AE=E6=94=B9=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=B1=82=E7=BA=A7=E5=85=B3=E7=B3=BB=EF=BC=8C=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=86=8D=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ccsens/ptccsens/bean/dto/RoleDto.java | 5 +- .../ptccsens/persist/dao/ProRoleDao.java | 8 + .../ptccsens/service/ExportService.java | 16 + .../ptccsens/service/ImportService.java | 15 +- .../ccsens/ptccsens/service/TallService.java | 310 +++++++++--------- .../ccsens/ptccsens/util/BasicsCodeError.java | 2 + .../resources/mapper_dao/ProParentTaskDao.xml | 69 ++-- src/main/resources/mapper_dao/ProRoleDao.xml | 21 ++ .../resources/mapper_dao/ProTaskDetailDao.xml | 6 +- 9 files changed, 270 insertions(+), 182 deletions(-) diff --git a/src/main/java/com/ccsens/ptccsens/bean/dto/RoleDto.java b/src/main/java/com/ccsens/ptccsens/bean/dto/RoleDto.java index 3dc2a43..2c67e09 100644 --- a/src/main/java/com/ccsens/ptccsens/bean/dto/RoleDto.java +++ b/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; } } } diff --git a/src/main/java/com/ccsens/ptccsens/persist/dao/ProRoleDao.java b/src/main/java/com/ccsens/ptccsens/persist/dao/ProRoleDao.java index 46a3f9d..efa7bc3 100644 --- a/src/main/java/com/ccsens/ptccsens/persist/dao/ProRoleDao.java +++ b/src/main/java/com/ccsens/ptccsens/persist/dao/ProRoleDao.java @@ -90,4 +90,12 @@ public interface ProRoleDao extends ProRoleMapper { * @return 返回角色id */ List 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); } diff --git a/src/main/java/com/ccsens/ptccsens/service/ExportService.java b/src/main/java/com/ccsens/ptccsens/service/ExportService.java index f938d22..03d25fd 100644 --- a/src/main/java/com/ccsens/ptccsens/service/ExportService.java +++ b/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 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); } } } diff --git a/src/main/java/com/ccsens/ptccsens/service/ImportService.java b/src/main/java/com/ccsens/ptccsens/service/ImportService.java index b15ced3..774ce80 100644 --- a/src/main/java/com/ccsens/ptccsens/service/ImportService.java +++ b/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(); diff --git a/src/main/java/com/ccsens/ptccsens/service/TallService.java b/src/main/java/com/ccsens/ptccsens/service/TallService.java index 9d89217..0d74e41 100644 --- a/src/main/java/com/ccsens/ptccsens/service/TallService.java +++ b/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 pmList = proRoleDao.getWbsRoleInfo(param.getProjectId(),0); + List pmList = proRoleDao.getWbsRoleInfo(param.getProjectId(), 0); //查询项目成员的角色信息 - List roleList = proRoleDao.getWbsRoleInfo(param.getProjectId(),1); + List 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 mWbs = taskDetailDao.queryMwbs(param.getStartTime(),param.getEndTime(),null); - if(CollectionUtil.isNotEmpty(mWbs)){ + List 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 pWbs = taskDetailDao.queryPwbs(param.getStartTime(),param.getEndTime(),null,m.getId()); - if(CollectionUtil.isNotEmpty(pWbs)){ + List 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 invisibleList = new ArrayList<>(); //查询当前用户在项目下的角色,没有则算作关注者 - List userRoleList = proRoleDao.queryRoleByUserId(param.getProjectId(),user == null ? null : user.getId()); + List userRoleList = proRoleDao.queryRoleByUserId(param.getProjectId(), user == null ? null : user.getId()); //查询用户可见的角色 List 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 showRoleList = proRoleDao.queryShowByUserAndProject(param.getProjectId(),user == null ? null : user.getId()); - if(CollectionUtil.isNotEmpty(showRoleList)){ + List 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 taskList) { if (CollectionUtil.isNotEmpty(taskList)) { for (TallTaskVo.QueryTask queryTask : taskList) { - List checkerList = roleTaskDao.queryCheckerOfTask(queryTask.getDetailId()); + List 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> plugins, TallTaskVo.QueryTask queryTask) { List taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getId()); @@ -583,15 +587,15 @@ public class TallService implements ITallService { // return null; // } - private void queryPluginShow(List regularTask,Long userId) { - if(CollectionUtil.isEmpty(regularTask)){ + private void queryPluginShow(List 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 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 regularTask = taskDetailDao.pageQueryRegularTask(0, null, param.getRoleId(),queryTime,param.getTimeUnit(),param.getQueryType(),param.getTaskId(),param.getTriggerType()); + PageHelper.startPage(param.getPageNum(), param.getPageSize()); + List regularTask = taskDetailDao.pageQueryRegularTask(0, null, param.getRoleId(), queryTime, param.getTimeUnit(), param.getQueryType(), param.getTaskId(), param.getTriggerType()); PageInfo queryTaskPageInfo = new PageInfo<>(regularTask); - if(CollectionUtil.isNotEmpty(queryTaskPageInfo.getList())){ - if(param.getQueryType() == 0){ + if (CollectionUtil.isNotEmpty(queryTaskPageInfo.getList())) { + if (param.getQueryType() == 0) { //向上查找任务顺序是倒的,需要改成正序 List 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 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 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 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 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 taskSubList = proTaskSubDao.selectByExample(taskSubExample1); - List 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 taskSubList = proTaskSubDao.selectByExample(taskSubExample1); + List 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 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()); diff --git a/src/main/java/com/ccsens/ptccsens/util/BasicsCodeError.java b/src/main/java/com/ccsens/ptccsens/util/BasicsCodeError.java index 30b1028..affc65d 100644 --- a/src/main/java/com/ccsens/ptccsens/util/BasicsCodeError.java +++ b/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); + } diff --git a/src/main/resources/mapper_dao/ProParentTaskDao.xml b/src/main/resources/mapper_dao/ProParentTaskDao.xml index 04e3fbe..5361741 100644 --- a/src/main/resources/mapper_dao/ProParentTaskDao.xml +++ b/src/main/resources/mapper_dao/ProParentTaskDao.xml @@ -31,29 +31,52 @@ \ No newline at end of file diff --git a/src/main/resources/mapper_dao/ProRoleDao.xml b/src/main/resources/mapper_dao/ProRoleDao.xml index f1ce6e8..6a217bf 100644 --- a/src/main/resources/mapper_dao/ProRoleDao.xml +++ b/src/main/resources/mapper_dao/ProRoleDao.xml @@ -250,5 +250,26 @@ and d.rec_status = 0 GROUP BY r.id + \ No newline at end of file diff --git a/src/main/resources/mapper_dao/ProTaskDetailDao.xml b/src/main/resources/mapper_dao/ProTaskDetailDao.xml index dfcc44a..f0e7385 100644 --- a/src/main/resources/mapper_dao/ProTaskDetailDao.xml +++ b/src/main/resources/mapper_dao/ProTaskDetailDao.xml @@ -553,6 +553,7 @@ and ts.id != #{taskId} + 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 @@ and ts.id != #{taskId} + 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