diff --git a/pom.xml b/pom.xml index 46e3cb3..c21afbc 100644 --- a/pom.xml +++ b/pom.xml @@ -5,9 +5,9 @@ com.ccsens - contest + ptccsens 0.0.1-SNAPSHOT - contest + ptccsens Demo project for Spring Boot diff --git a/src/main/java/com/ccsens/ptccsens/api/DebugController.java b/src/main/java/com/ccsens/ptccsens/api/DebugController.java index 489443c..1d4149f 100644 --- a/src/main/java/com/ccsens/ptccsens/api/DebugController.java +++ b/src/main/java/com/ccsens/ptccsens/api/DebugController.java @@ -33,14 +33,6 @@ import java.util.List; @RequestMapping("/debug") @Slf4j public class DebugController { - @Resource - private PluDeliverDao pluDeliverDao; - @Resource - private Snowflake snowflake; - @Resource - private ProTaskPluginDao proTaskPluginDao; - @Resource - private ProTaskSubDao proTaskSubDao; @ApiOperation(value = "/测试",notes = "") @ApiImplicitParams({ diff --git a/src/main/java/com/ccsens/ptccsens/api/DeliverController.java b/src/main/java/com/ccsens/ptccsens/api/DeliverController.java index 02e6d6c..d7c5e13 100644 --- a/src/main/java/com/ccsens/ptccsens/api/DeliverController.java +++ b/src/main/java/com/ccsens/ptccsens/api/DeliverController.java @@ -66,7 +66,7 @@ public class DeliverController { @ApiOperation(value = "提交交付物信息", notes = "") @RequestMapping(value = "/submitDeliver", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse submitDeliver(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{ - log.info("查看任务下的交付物--{}",params); + log.info("提交交付物信息--{}",params); deliverService.submitDeliver(params.getParam(), params.getUserId()); return JsonResponse.newInstance().ok(); } diff --git a/src/main/java/com/ccsens/ptccsens/bean/dto/DeliverDto.java b/src/main/java/com/ccsens/ptccsens/bean/dto/DeliverDto.java index 8918a84..f192761 100644 --- a/src/main/java/com/ccsens/ptccsens/bean/dto/DeliverDto.java +++ b/src/main/java/com/ccsens/ptccsens/bean/dto/DeliverDto.java @@ -64,6 +64,8 @@ public class DeliverDto { @NotNull(message = "请选择项目") @ApiModelProperty("项目id") private Long projectId; + @ApiModelProperty("角色id") + private Long roleId; @NotNull(message = "请选择交付物") @ApiModelProperty("交付物id") private Long deliverId; diff --git a/src/main/java/com/ccsens/ptccsens/service/DeliverService.java b/src/main/java/com/ccsens/ptccsens/service/DeliverService.java index ac7dee2..0bf0d92 100644 --- a/src/main/java/com/ccsens/ptccsens/service/DeliverService.java +++ b/src/main/java/com/ccsens/ptccsens/service/DeliverService.java @@ -150,18 +150,23 @@ public class DeliverService implements IDeliverService { } //----------------消息------------------------ //获取任务的角色信息 - List roleIdList = proRoleDao.getRoleIdBySubTaskId(pluDeliver.getTaskSubId()); + Long roleId = param.getRoleId(); + if(ObjectUtil.isNull(roleId)){ + List roleIdList = proRoleDao.getRoleIdBySubTaskId(pluDeliver.getTaskSubId()); + if(CollectionUtil.isNotEmpty(roleIdList)){ + roleId = roleIdList.get(0); + } + } //查询任务是定期还是日常 Byte taskType = proTaskDetailDao.getTaskTypeBySubTaskId(pluDeliver.getTaskSubId()); //查询当前任务的交付物插件id Long pluginId = proTaskDetailDao.getDeliverPluginIdBySubTaskId(pluDeliver.getTaskSubId()); - if(CollectionUtil.isNotEmpty(roleIdList)){ -// roleIdList.forEach(roleId -> { -// //生成消息内容 - RemindMessageDto remindMessageDto = new RemindMessageDto(param.getProjectId(),roleIdList.get(0),pluDeliver.getTaskSubId(),pluginId,taskType,"提交交付物"); - //TODO 发送消息 - MessageUtil.sendToUser(phoneList,null,remindMessageDto,MessageConstant.DomainType.User,null); -// }); + if(ObjectUtil.isNotNull(roleId)){ + //生成消息内容 + RemindMessageDto remindMessageDto = new RemindMessageDto(param.getProjectId(),roleId,pluDeliver.getTaskSubId(),pluginId,taskType,"提交交付物"); + //TODO 发送消息 + MessageUtil.sendToUser(phoneList,null,remindMessageDto,MessageConstant.DomainType.User,null); + } } diff --git a/src/main/java/com/ccsens/ptccsens/service/IImportService.java b/src/main/java/com/ccsens/ptccsens/service/IImportService.java index 708bfc9..d013400 100644 --- a/src/main/java/com/ccsens/ptccsens/service/IImportService.java +++ b/src/main/java/com/ccsens/ptccsens/service/IImportService.java @@ -12,6 +12,6 @@ public interface IImportService { * @param userId userId * @throws Exception 异常 */ - TallProjectVo.ProjectInfo importWbs(String path, Long userId, Long projectId) throws Exception; + TallProjectVo.ProjectInfo importWbs(String path, Long userId, Long parentId) throws Exception; } diff --git a/src/main/java/com/ccsens/ptccsens/service/ImportService.java b/src/main/java/com/ccsens/ptccsens/service/ImportService.java index 06cbe8c..520f5f3 100644 --- a/src/main/java/com/ccsens/ptccsens/service/ImportService.java +++ b/src/main/java/com/ccsens/ptccsens/service/ImportService.java @@ -90,7 +90,7 @@ public class ImportService implements IImportService { * @throws Exception 异常 */ @Override - public TallProjectVo.ProjectInfo importWbs(String path, Long userId, Long projectId) throws Exception { + public TallProjectVo.ProjectInfo importWbs(String path, Long userId, Long parentId) throws Exception { TallProjectVo.ProjectInfo projectInfo = new TallProjectVo.ProjectInfo(); //获取excel文件 InputStream is = new FileInputStream(path); @@ -103,7 +103,7 @@ public class ImportService implements IImportService { Map taskMap = new HashMap<>(); //读取文件 - readExcel(xssfWorkbook, userId, roleMap, memberMap, taskMap,projectId,projectInfo); + readExcel(xssfWorkbook, userId, roleMap, memberMap, taskMap,parentId,projectInfo); //读取插件配置表 readPluginConfig(xssfWorkbook,taskMap); @@ -161,7 +161,7 @@ public class ImportService implements IImportService { /** * 读取每个sheet */ - private void readExcel(XSSFWorkbook wb, Long userId, Map roleMap, Map memberMap, Map taskMap, Long projectId, TallProjectVo.ProjectInfo projectInfo) { + private void readExcel(XSSFWorkbook wb, Long userId, Map roleMap, Map memberMap, Map taskMap, Long parentId, TallProjectVo.ProjectInfo projectInfo) { //获取wbsSheet XSSFSheet wbsSheet = wb.getSheet(BasicsConstant.WbsExcel.WBS_SHEET); if (ObjectUtil.isNull(wbsSheet)) { @@ -207,13 +207,19 @@ public class ImportService implements IImportService { if(ObjectUtil.isNull(project)){ throw new BaseException(BasicsCodeError.WSB_NOT_PROJECT_HEADER); } + //如果parentId不为空,添加层级关系 + if(ObjectUtil.isNotNull(parentId)){ + ProParentTask proParentTask = new ProParentTask(); + proParentTask.setId(snowflake.nextId()); + proParentTask.setTaskDetailId(project.getId()); + proParentTask.setParentTaskDetailId(parentId); + parentTaskMapper.insertSelective(proParentTask); + } //读取成员表 readMemberSheet(memberSheet,project,roleMap,memberMap); //添加任务 readTask(wbsSheet,taskStart,project,roleMap,taskMap); - //获取用户列表 - Set userIdSet = new HashSet<>(); - userIdSet.add(userId); + //处理创建人的权限问题(添加创建人角色) //查找创建者标签id Long roleLabelId = labelDao.getLabelByTypeAndLevel(5, 5); @@ -232,7 +238,7 @@ public class ImportService implements IImportService { if(member.getUserId().equals(userId)){ memberId = member.getId(); } - userIdSet.add(member.getUserId()); +// userIdSet.add(member.getUserId()); } } } @@ -241,13 +247,12 @@ public class ImportService implements IImportService { //添加成员至数据库 ProMember proMember = new ProMember(); proMember.setId(snowflake.nextId()); - proMember.setProjectId(projectId); + proMember.setProjectId(project.getId()); proMember.setUserId(userId); memberDao.insertSelective(proMember); - memberId = proMember.getId(); +// memberId = proMember.getId(); } - //添加当前用户未创建者 - //添加角色成员关联信息 + //添加当前用户为创建者 ProRoleMember roleMember = new ProRoleMember(); roleMember.setId(snowflake.nextId()); roleMember.setRoleId(role.getId()); @@ -321,11 +326,17 @@ 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); } } //项目名不能重复(当前用户创建的项目内名字不能重复) //根据userId查找已创建的项目 - if(0 == project.getImportType()) { +// if(0 == project.getImportType()) { List sysProjectList = projectDao.queryByCreator(userId); if (CollectionUtil.isNotEmpty(sysProjectList)) { sysProjectList.forEach(p -> { @@ -335,7 +346,7 @@ public class ImportService implements IImportService { } }); } - } +// } //判断时间是否正确 String begin = ExcelUtil.getCellValue(row.getCell(3)); String end = ExcelUtil.getCellValue(row.getCell(4)); diff --git a/src/main/java/com/ccsens/ptccsens/service/TallService.java b/src/main/java/com/ccsens/ptccsens/service/TallService.java index e83f19f..0941f6c 100644 --- a/src/main/java/com/ccsens/ptccsens/service/TallService.java +++ b/src/main/java/com/ccsens/ptccsens/service/TallService.java @@ -3,13 +3,13 @@ package com.ccsens.ptccsens.service; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.ccsens.ptccsens.bean.dto.FinanceDto; import com.ccsens.ptccsens.bean.po.*; -import com.ccsens.ptccsens.bean.vo.ClockingInVo; import com.ccsens.ptccsens.bean.vo.DeliverVo; import com.ccsens.ptccsens.bean.vo.FinanceVo; import com.ccsens.ptccsens.persist.dao.*; @@ -50,6 +50,8 @@ import java.util.stream.Collectors; @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) public class TallService implements ITallService { + @Resource + private Snowflake snowflake; @Resource private ProRoleDao proRoleDao; @Resource @@ -108,18 +110,8 @@ public class TallService implements ITallService { @SneakyThrows @Override - public TallProjectVo.ProjectInfo importWbs(String token, MultipartFile params) { - //TODO 根据token获取用户信息 - TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET)); - 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())){ - user = userDao.getUserIdByPhone(userByToken.getPhone()); - } + public TallProjectVo.ProjectInfo importWbs(String token, MultipartFile params,Long parentId) { + ProUser user = getUserByToken(token); log.info("本服务下的用户信息:{}", user); if(ObjectUtil.isNull(user)){ throw new BaseException(BasicsCodeError.NOT_USER_SERVER); @@ -142,15 +134,27 @@ public class TallService implements ITallService { FileUtil.writeFromStream(params.getInputStream(), fullPath); //导入数据库 - return importService.importWbs(fullPath,user.getId(),null); + 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)){ + throw new BaseException(CodeEnum.NOT_LOGIN); + } + log.info("token获取的用户信息:{}", userByToken); + //通过手机号获取用户在服务内的userId + ProUser user = null; + if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){ + user = userDao.getUserIdByPhone(userByToken.getPhone()); + } + return user; } @SneakyThrows @Override public TallWbsVo.WbsPath exportWbs(String token, TallProjectDto.ProjectById param) { - //TODO 验证项目id是否正确 - //TODO 暂时只查询二级任务,不管二级以下的子任务 - //查询下项目信息 TallWbsVo.WbsProjectInfo wbsProjectInfo = proProjectDao.getWbsProjectId(param.getProjectId()); if(ObjectUtil.isNull(wbsProjectInfo)){ @@ -193,18 +197,8 @@ public class TallService implements ITallService { @Override public List queryProjectByUser(String token, TallProjectDto.QueryProjectDto param) { - TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET)); - if(ObjectUtil.isNull(userByToken)){ - return null; - } - //通过手机号获取用户在服务内的userId - ProUser user = null; - if(StrUtil.isNotBlank(userByToken.getPhone())){ - user = userDao.getUserIdByPhone(userByToken.getPhone()); - } //TODO 暂时查询全部,无论是否查到user -// List projectInfos = new ArrayList<>(); //查找所有没有上级的项目,作为MWBS List mWbs = taskDetailDao.queryMwbs(param.getStartTime(),param.getEndTime(),null); if(CollectionUtil.isNotEmpty(mWbs)){ @@ -230,16 +224,9 @@ public class TallService implements ITallService { @Override public TallRoleVo.QueryRole queryShowRole(String token, TallRoleDto.QueryRoleById param) { - //TODO 通过token向tall获取用户信息, - TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET)); - if(ObjectUtil.isNull(userByToken)){ - throw new BaseException(CodeEnum.NOT_LOGIN); - } - //通过手机号获取用户在服务内的userId - ProUser user = null; - if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){ - user = userDao.getUserIdByPhone(userByToken.getPhone()); - } + + ProUser user = getUserByToken(token); + log.info("本服务下的用户信息:{}", user); //返回的对象 TallRoleVo.QueryRole queryRole = new TallRoleVo.QueryRole(); List visibleList = new ArrayList<>(); @@ -249,7 +236,7 @@ public class TallService implements ITallService { List userRoleList = proRoleDao.queryRoleByUserId(param.getProjectId(),user == null ? null : user.getId()); //查询用户可见的角色 - List roleInfoList = new ArrayList<>(); + List roleInfoList; if(CollectionUtil.isNotEmpty(userRoleList)){ //不是关注者,查询可见的角色(完全屏蔽才不可见) roleInfoList = proRoleDao.notAttentionQueryRole(param.getProjectId(),userRoleList); @@ -258,7 +245,7 @@ public class TallService implements ITallService { roleInfoList = proRoleDao.attentionQueryRole(param.getProjectId()); } //查询配置信息 - List showRoleList = proRoleDao.queryShowByUserAndProject(param.getProjectId(),userByToken.getId()); + List showRoleList = proRoleDao.queryShowByUserAndProject(param.getProjectId(),user == null ? null : user.getId()); if(CollectionUtil.isNotEmpty(showRoleList)){ for (Long showRoleId : showRoleList) { //循环配置内的信息去匹配角色列表,来确定角色该放在什么地方 @@ -315,18 +302,9 @@ public class TallService implements ITallService { @Override public List queryPermanentGlobalTask(String token, TallTaskDto.QueryPermanentGlobalTask param) { - TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET)); - if(ObjectUtil.isNull(userByToken)){ - throw new BaseException(CodeEnum.NOT_LOGIN); - } - //通过手机号获取用户在服务内的userId - ProUser user = null; - if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){ - user = userDao.getUserIdByPhone(userByToken.getPhone()); - } -// if(ObjectUtil.isNull(user)){ -// throw new BaseException(BasicsCodeError.NOT_USER_SERVER); -// } + + ProUser user = getUserByToken(token); + log.info("本服务下的用户信息:{}", user); List roleIds = new ArrayList<>(); roleIds.add(param.getRoleId()); @@ -337,25 +315,16 @@ public class TallService implements ITallService { //查询任务下的检查人 queryCheckerOfTask(permanentGlobalTask); - //TODO 查询插件展示信息 + //查询插件展示信息 queryPluginShow(permanentGlobalTask,user == null ? null : user.getId()); return permanentGlobalTask; } @Override public List queryGlobalTask(String token, TallTaskDto.QueryGlobalTask param) { - TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET)); - if(ObjectUtil.isNull(userByToken)){ - throw new BaseException(CodeEnum.NOT_LOGIN); - } - //通过手机号获取用户在服务内的userId - ProUser user = null; - if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){ - user = userDao.getUserIdByPhone(userByToken.getPhone()); - } -// if(ObjectUtil.isNull(user)){ -// throw new BaseException(BasicsCodeError.NOT_USER_SERVER); -// } + + ProUser user = getUserByToken(token); + log.info("本服务下的用户信息:{}", user); List roleIds = new ArrayList<>(); roleIds.add(param.getRoleId()); @@ -365,20 +334,14 @@ public class TallService implements ITallService { //查询任务下的检查人 queryCheckerOfTask(globalTask); - //TODO 查询插件展示信息 + //查询插件展示信息 queryPluginShow(globalTask,user == null ? null : user.getId()); return globalTask; } @Override public List queryRegularTask(String token, TallTaskDto.QueryRegularTask param) { - //TODO 通过token向tall获取用户信息, -// Long userId = null; -// //查找当前角色是否有查看权限 -// Boolean isLook = queryRoleIsLook(param.getRoleId(), userId); -// if (BooleanUtil.isFalse(isLook)) { -// throw new BaseException(BasicsCodeError.NOT_PERMISSION); -// } + //查找类型:0向上查找,1向下查找(默认),下查包含自己,上查不包含 //根据参数配置sql语句 String query = ""; @@ -393,7 +356,6 @@ public class TallService implements ITallService { List roleIds = new ArrayList<>(); roleIds.add(param.getRoleId()); - //TODO 季度未实现 List regularTask = taskDetailDao.queryRegularTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat); //如果该时段没有任务向上或向下补充 if (CollectionUtil.isEmpty(regularTask)) { @@ -423,44 +385,45 @@ public class TallService implements ITallService { return regularTask; } - /** - * 判断当前用户的角色是否被设置不可见(是否有权限查看任务) - * - * @param roleId 查看的角色id - * @param userId 用户id - * @return 是否可见(true可见, false不可见) - */ - public Boolean queryRoleIsLook(Long roleId, Long userId) { - byte visitor = 0; - Long projectId = roleDao.findRoleOfProjectId(roleId); - if (ObjectUtil.isNull(projectId)) { - throw new BaseException(BasicsCodeError.ROLE_ERROR); - } - Long memberId = memberDao.findUserOfMemberId(projectId, userId); - //不是项目成员则为游客 - if (ObjectUtil.isNull(memberId)) { - visitor = 1; - } - //查看角色互斥表是否有对所属角色不可见 - List repulsionRoleIds = roleRepulsionDao.findRepulsionByRoleId(roleId); - //如果为游客 - if (1 == visitor) { - return !CollectionUtil.isNotEmpty(repulsionRoleIds); - } - //查找成员所属的所有角色 - List roleIds = roleMemberDao.findMemberOfRoleIds(memberId); - if (CollectionUtil.isEmpty(roleIds)) { - if (CollectionUtil.isNotEmpty(repulsionRoleIds)) { - return false; - } - } - //排斥角色包含所有所属角色则不可见 - if (CollectionUtil.isNotEmpty(repulsionRoleIds) && CollectionUtil.isNotEmpty(roleIds)) { - boolean isLook = repulsionRoleIds.containsAll(roleIds); - return !isLook; - } - return true; - } +// /** +// * 判断当前用户的角色是否被设置不可见(是否有权限查看任务) +// * +// * @param roleId 查看的角色id +// * @param userId 用户id +// * @return 是否可见(true可见, false不可见) +// */ +// public Boolean queryRoleIsLook(Long roleId, Long userId) { +// byte visitor = 0; +// Long projectId = roleDao.findRoleOfProjectId(roleId); +// if (ObjectUtil.isNull(projectId)) { +// throw new BaseException(BasicsCodeError.ROLE_ERROR); +// } +// Long memberId = memberDao.findUserOfMemberId(projectId, userId); +// //不是项目成员则为游客 +// if (ObjectUtil.isNull(memberId)) { +// visitor = 1; +// } +// //查看角色互斥表是否有对所属角色不可见 +// List repulsionRoleIds = roleRepulsionDao.findRepulsionByRoleId(roleId); +// //如果为游客 +// if (1 == visitor) { +// return !CollectionUtil.isNotEmpty(repulsionRoleIds); +// } +// //查找成员所属的所有角色 +// List roleIds = roleMemberDao.findMemberOfRoleIds(memberId); +// if (CollectionUtil.isEmpty(roleIds)) { +// if (CollectionUtil.isNotEmpty(repulsionRoleIds)) { +// return false; +// } +// } +// //排斥角色包含所有所属角色则不可见 +// if (CollectionUtil.isNotEmpty(repulsionRoleIds) && CollectionUtil.isNotEmpty(roleIds)) { +// boolean isLook = repulsionRoleIds.containsAll(roleIds); +// return !isLook; +// } +// return true; +// } + /** * 查询任务的插件相关信息 @@ -560,77 +523,65 @@ public class TallService implements ITallService { } - /** - * 查看定期任务和任务下的插件展示信息 - * @param token token - * @param param 查询条件 - * @return 返回任务列表和对应的插件展示信息 - */ - @Override - public List queryRegularTaskAndPlugin(String token, TallTaskDto.QueryRegularTask param) { - //TODO 根据token获取用户信息 - TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET)); - if(ObjectUtil.isNull(userByToken)){ - throw new BaseException(CodeEnum.NOT_LOGIN); - } - //通过手机号获取用户在服务内的userId - ProUser user = null; - if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){ - user = userDao.getUserIdByPhone(userByToken.getPhone()); - } -// if(ObjectUtil.isNull(user)){ -// throw new BaseException(BasicsCodeError.NOT_USER_SERVER); +// /** +// * 查看定期任务和任务下的插件展示信息 +// * @param token token +// * @param param 查询条件 +// * @return 返回任务列表和对应的插件展示信息 +// */ +// @Override +// public List queryRegularTaskAndPlugin(String token, TallTaskDto.QueryRegularTask param) { +// ProUser user = getUserByToken(token); +// log.info("本服务下的用户信息:{}", user); +// +// //查找类型:0向上查找,1向下查找(默认),下查包含自己,上查不包含 +// //根据参数配置sql语句 +// String query = ""; +// String timeFormat = Constant.timeFormat.get(param.getTimeUnit()); +// String unit = Constant.timeUnit.get(param.getTimeUnit()); +// if (0 == param.getQueryType()) { +// query = "interval -" + param.getQueryNum() + " " + unit; +// } else { +// query += "interval " + (param.getQueryNum() - 1) + " " + unit; // } - - //查找类型:0向上查找,1向下查找(默认),下查包含自己,上查不包含 - //根据参数配置sql语句 - String query = ""; - String timeFormat = Constant.timeFormat.get(param.getTimeUnit()); - String unit = Constant.timeUnit.get(param.getTimeUnit()); - if (0 == param.getQueryType()) { - query = "interval -" + param.getQueryNum() + " " + unit; - } else { - query += "interval " + (param.getQueryNum() - 1) + " " + unit; - } - - List roleIds = new ArrayList<>(); - roleIds.add(param.getRoleId()); - - //TODO 季度未实现 - List regularTask = taskDetailDao.queryRegularTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat); - //如果该时段没有任务向上或向下补充 - if (CollectionUtil.isEmpty(regularTask)) { - List replenishTask = taskDetailDao.continueQueryTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat); - Map> taskMap = replenishTask.stream().collect(Collectors.groupingBy(task -> new SimpleDateFormat("yyyy-MM-dd").format(new Date(task.getPlanStart())))); - List mapOfKey = new ArrayList<>(); - taskMap.forEach((key, val) -> mapOfKey.add(key)); - if (CollectionUtil.isNotEmpty(mapOfKey)) { - if (0 == param.getQueryType()) { - String max = Collections.max(mapOfKey); - queryPluginForTask(taskMap.get(max)); - return taskMap.get(max); - } else { - String min = Collections.min(mapOfKey); - queryPluginForTask(taskMap.get(min)); - return taskMap.get(min); - } - } - queryPluginForTask(replenishTask); - //查询任务下的检查人 - queryCheckerOfTask(replenishTask); - //TODO 查询插件展示信息 - queryPluginShow(regularTask,user == null ? null : user.getId()); - return replenishTask; - } - queryPluginForTask(regularTask); - //查询任务下的检查人 - queryCheckerOfTask(regularTask); - - //TODO 查询插件展示信息 - queryPluginShow(regularTask,user == null ? null : user.getId()); - - return regularTask; - } +// +// List roleIds = new ArrayList<>(); +// roleIds.add(param.getRoleId()); +// +// List regularTask = taskDetailDao.queryRegularTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat); +// //如果该时段没有任务向上或向下补充 +// if (CollectionUtil.isEmpty(regularTask)) { +// List replenishTask = taskDetailDao.continueQueryTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat); +// Map> taskMap = replenishTask.stream().collect(Collectors.groupingBy(task -> new SimpleDateFormat("yyyy-MM-dd").format(new Date(task.getPlanStart())))); +// List mapOfKey = new ArrayList<>(); +// taskMap.forEach((key, val) -> mapOfKey.add(key)); +// if (CollectionUtil.isNotEmpty(mapOfKey)) { +// if (0 == param.getQueryType()) { +// String max = Collections.max(mapOfKey); +// queryPluginForTask(taskMap.get(max)); +// return taskMap.get(max); +// } else { +// String min = Collections.min(mapOfKey); +// queryPluginForTask(taskMap.get(min)); +// return taskMap.get(min); +// } +// } +// queryPluginForTask(replenishTask); +// //查询任务下的检查人 +// queryCheckerOfTask(replenishTask); +// //查询插件展示信息 +// queryPluginShow(regularTask,user == null ? null : user.getId()); +// return replenishTask; +// } +// queryPluginForTask(regularTask); +// //查询任务下的检查人 +// queryCheckerOfTask(regularTask); +// +// //查询插件展示信息 +// queryPluginShow(regularTask,user == null ? null : user.getId()); +// +// return null; +// } private void queryPluginShow(List regularTask,Long userId) { if(CollectionUtil.isEmpty(regularTask)){ @@ -646,53 +597,27 @@ public class TallService implements ITallService { //TODO 判断插件类型,暂时一个个的判断,之后应该是统一的接口 Long pluginId = plugin.getPluginId(); if (pluginId == 15L) { - //TODO 查找交付物的信息 + //查找交付物的信息 DeliverVo.DeliverOfTask deliverByTask = pluDeliverDao.getDeliverByTask(queryTask.getId(), userId); plugin.setData(JSON.toJSONString(deliverByTask)); } else if (pluginId == 18L) { - //TODO 查找财务条的信息 + //查找财务条的信息 FinanceVo.FinanceItem byTask = financeService.getByTask(new FinanceDto.TaskId(queryTask.getDetailId())); plugin.setData(JSON.toJSONString(byTask)); } } } } -// queryTask.getPlugins().forEach(pluginInfos -> { -// if(CollectionUtil.isNotEmpty(pluginInfos)){ -// pluginInfos.forEach(plugin ->{ -// //TODO 判断插件类型,暂时一个个的判断,之后应该是统一的接口 -// Long pluginId = plugin.getPluginId(); -// if (pluginId == 15L) { -// //TODO 查找交付物的信息 -// DeliverVo.DeliverOfTask deliverByTask = pluDeliverDao.getDeliverByTask(queryTask.getId(), userId); -// plugin.setData(JSON.toJSONString(deliverByTask)); -// } else if (pluginId == 18L) { -// //TODO 查找财务条的信息 -// FinanceVo.FinanceItem byTask = financeService.getByTask(new FinanceDto.TaskId(queryTask.getDetailId())); -// plugin.setData(JSON.toJSONString(byTask)); -// } -// }); -// } -// }); } } } @Override public PageInfo pageQueryRegularTask(String token, TallTaskDto.PageQueryRegularTask param) { - //TODO 根据token获取用户信息 - TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET)); - if(ObjectUtil.isNull(userByToken)){ - throw new BaseException(CodeEnum.NOT_LOGIN); - } - //通过手机号获取用户在服务内的userId - ProUser user = null; - if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){ - user = userDao.getUserIdByPhone(userByToken.getPhone()); - } -// if(ObjectUtil.isNull(user)){ -// throw new BaseException(BasicsCodeError.NOT_USER_SERVER); -// } + + ProUser user = getUserByToken(token); + log.info("本服务下的用户信息:{}", user); + //查询用的时间 Long queryTime = System.currentTimeMillis(); @@ -717,8 +642,8 @@ public class TallService implements ITallService { } } } -//如果查看的角色项目经理,则查看所有任务 + //如果查看的角色项目经理,则查看所有任务 int isPm = 0; ProRole role = proRoleDao.selectByPrimaryKey(param.getRoleId()); if(ObjectUtil.isNotNull(role)){ @@ -727,7 +652,7 @@ public class TallService implements ITallService { //获取任务列表 PageHelper.startPage(param.getPageNum(),param.getPageSize()); - List regularTask = taskDetailDao.pageQueryRegularTask(isPm, role.getProjectId(), param.getRoleId(),queryTime,param.getTimeUnit(),param.getQueryType(),param.getTaskId(),param.getTriggerType()); + List regularTask = taskDetailDao.pageQueryRegularTask(isPm, param.getProjectId(), 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){ @@ -742,36 +667,16 @@ public class TallService implements ITallService { queryPluginForTask(queryTaskPageInfo.getList()); //查询任务下的检查人 queryCheckerOfTask(queryTaskPageInfo.getList()); - //TODO 查询插件展示信息 + //查询插件展示信息 queryPluginShow(queryTaskPageInfo.getList(),user == null ? null : user.getId()); } -// //获取任务列表 -// PageHelper.startPage(param.getPageNum(),param.getPageSize()); -// List regularTask = taskDetailDao.pageQueryRegularTask(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){ -// //向上查找任务顺序是倒的,需要改成正序 -// List taskList = new ArrayList<>(); -// for (int i = queryTaskPageInfo.getList().size() - 1; i >= 0; i--) { -// taskList.add(queryTaskPageInfo.getList().get(i)); -// } -// queryTaskPageInfo.setList(taskList); -// } -// //查询任务下的插件 -// queryPluginForTask(queryTaskPageInfo.getList()); -// //查询任务下的检查人 -// queryCheckerOfTask(queryTaskPageInfo.getList()); -// //TODO 查询插件展示信息 -// queryPluginShow(queryTaskPageInfo.getList(),user == null ? null : user.getId()); -// } return queryTaskPageInfo; } @Override public List queryAllTask(TallTaskDto.QueryAllTask param) { - List queryTaskList = null; + List queryTaskList = new ArrayList<>(); //通过手机号查找服务内的用户 ProUser user = userDao.getUserIdByPhone(param.getPhone()); if(ObjectUtil.isNull(user)){ @@ -802,16 +707,10 @@ public class TallService implements ITallService { @Override public void deleteProject(String token, TallProjectDto.ProjectById params) { - //根据token获取用户信息 - TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET)); - if(ObjectUtil.isNull(userByToken)){ - throw new BaseException(CodeEnum.NOT_LOGIN); - } - //通过手机号获取用户在服务内的userId - ProUser user = null; - if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){ - user = userDao.getUserIdByPhone(userByToken.getPhone()); - } + //查找用户 + ProUser user = getUserByToken(token); + log.info("本服务下的用户信息:{}", user); + if(ObjectUtil.isNull(user)){ throw new BaseException(BasicsCodeError.NOT_USER_SERVER); } @@ -820,7 +719,7 @@ public class TallService implements ITallService { if (power < 1) { throw new BaseException(BasicsCodeError.NO_POWER); } - //TODO 删除项目 暂时只删除项目 + //删除项目 ProTaskDetail project = new ProTaskDetail(); project.setId(params.getProjectId()); project.setRecStatus((byte) 2); @@ -961,4 +860,50 @@ public class TallService implements ITallService { taskPanelInfoExample.createCriteria().andTaskDetailIdIn(allTaskId); taskPanelInfoMapper.updateByExampleSelective(taskPanelInfo,taskPanelInfoExample); } + + @Override + public void dragProject(String token, TallProjectDto.MoveProject params) { + //获取用户信息 + ProUser user = getUserByToken(token); + log.info("本服务下的用户信息:{}", user); + if(ObjectUtil.isNull(user)){ + throw new BaseException(BasicsCodeError.NOT_USER_SERVER); + } + //检查移动的项目是否存在 + ProTaskDetail moveProject = taskDetailDao.selectByPrimaryKey(params.getMoveProjectId()); + if(ObjectUtil.isNull(moveProject)){ + throw new BaseException(BasicsCodeError.PROJECT_NOT_FOUND); + } + //如果目标项目id不为空,检查项目是否存在 + if(ObjectUtil.isNotNull(params.getTargetProjectId())){ + ProTaskDetail targetProject = taskDetailDao.selectByPrimaryKey(params.getTargetProjectId()); + if(ObjectUtil.isNull(targetProject)){ + throw new BaseException(BasicsCodeError.PROJECT_NOT_FOUND); + } + } + //TODO 检查用户权限(用户必须是移动项目的项目经理) + //判断用户是否是项目经理 + Integer power = powerService.queryUserPower(params.getMoveProjectId(), user.getId()); + if (power < 1) { + throw new BaseException(BasicsCodeError.NO_POWER); + } + //删除之前的层级关系 + ProParentTaskExample parentTaskExample = new ProParentTaskExample(); + parentTaskExample.createCriteria().andTaskDetailIdEqualTo(params.getMoveProjectId()); + List proParentTasks = parentTaskDao.selectByExample(parentTaskExample); + if(CollectionUtil.isNotEmpty(proParentTasks)){ + proParentTasks.forEach(proParentTask -> { + proParentTask.setRecStatus((byte) 2); + parentTaskDao.updateByPrimaryKeySelective(proParentTask); + }); + } + //重新添加 + if(ObjectUtil.isNotNull(params.getTargetProjectId())){ + ProParentTask proParentTask = new ProParentTask(); + proParentTask.setId(snowflake.nextId()); + proParentTask.setTaskDetailId(params.getMoveProjectId()); + proParentTask.setParentTaskDetailId(params.getTargetProjectId()); + parentTaskDao.insertSelective(proParentTask); + } + } } diff --git a/src/main/resources/mapper_dao/ProTaskDetailDao.xml b/src/main/resources/mapper_dao/ProTaskDetailDao.xml index 14306da..03aa8d8 100644 --- a/src/main/resources/mapper_dao/ProTaskDetailDao.xml +++ b/src/main/resources/mapper_dao/ProTaskDetailDao.xml @@ -455,9 +455,10 @@ LEFT JOIN t_label_business lb on d.id = lb.business_id and lb.rec_status = 0 LEFT JOIN t_label l on l.id = lb.label_id and l.rec_status = 0 LEFT JOIN t_pro_parent_task p on d.id = p.task_detail_id and p.rec_status = 0 + LEFT JOIN t_pro_task_detail d2 on d2.id = p.parent_task_detail_id and d2.rec_status = 0 WHERE l.label_type_id = 2 - and p.parent_task_detail_id is null + and d2.id is null and l.`level` = 0 and @@ -553,7 +554,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 diff --git a/src/main/resources/mapper_dao/ProTaskPluginDao.xml b/src/main/resources/mapper_dao/ProTaskPluginDao.xml index 7624014..55543db 100644 --- a/src/main/resources/mapper_dao/ProTaskPluginDao.xml +++ b/src/main/resources/mapper_dao/ProTaskPluginDao.xml @@ -131,11 +131,11 @@ p.rowspan AS rowspan, p.id AS pluginTaskId FROM - t_pro_task_sub s - LEFT JOIN t_pro_task_detail d on s.task_detail_id = d.id and d.rec_status = 0 - LEFT JOIN t_pro_task_plugin p on d.id = p.task_detail_id and p.rec_status = 0 + t_pro_task_plugin p + LEFT JOIN t_pro_task_detail d on d.id = p.task_detail_id and d.rec_status = 0 + LEFT JOIN t_pro_task_sub s on s.task_detail_id = d.id and s.rec_status = 0 WHERE - s.rec_status = 0 + p.rec_status = 0 and s.id = #{subId}