From 52fbd184e3d5d83ceaaff8ffe2cf9ae99b55324f Mon Sep 17 00:00:00 2001 From: ma <1062634917@qq.com> Date: Wed, 28 Jul 2021 09:39:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=8D=E5=88=B6=E9=A1=B9=E7=9B=AE=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=BB=E5=8A=A1=E7=9C=9F=E5=AE=9E=E5=BC=80?= =?UTF-8?q?=E5=A7=8B=E6=97=B6=E9=97=B4=20=E7=BB=99=E5=A4=8D=E5=88=B6?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=B7=BB=E5=8A=A0=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ccsens/common/api/TaskController.java | 20 +-- .../ccsens/common/bean/dto/CProjectDto.java | 23 ++++ .../com/ccsens/common/bean/vo/CRoleVo.java | 17 +++ .../ccsens/common/persist/dao/ProRoleDao.java | 16 +++ .../common/persist/dao/ProTaskDetailDao.java | 16 +-- .../common/persist/dao/ProTaskProcessDao.java | 8 ++ .../common/persist/dao/ProTaskSubDao.java | 8 ++ .../common/service/IProjectService.java | 6 + .../ccsens/common/service/ProjectService.java | 34 +++++ .../ccsens/common/service/TaskService.java | 121 +++++++++++++++++- .../ccsens/common/util/CommonCodeError.java | 1 + .../java/com/ccsens/common/util/Constant.java | 12 ++ .../main/resources/mapper_dao/ProRoleDao.xml | 39 ++++++ .../resources/mapper_dao/ProTaskDetailDao.xml | 22 +++- .../mapper_dao/ProTaskProcessDao.xml | 20 +++ .../resources/mapper_dao/ProTaskSubDao.xml | 23 ++++ 16 files changed, 360 insertions(+), 26 deletions(-) diff --git a/common/src/main/java/com/ccsens/common/api/TaskController.java b/common/src/main/java/com/ccsens/common/api/TaskController.java index 327ab6dc..55335160 100644 --- a/common/src/main/java/com/ccsens/common/api/TaskController.java +++ b/common/src/main/java/com/ccsens/common/api/TaskController.java @@ -1,8 +1,10 @@ //package com.ccsens.common.api; // //import com.ccsens.cloudutil.annotation.MustLogin; -//import com.ccsens.common.bean.dto.TaskDto; -//import com.ccsens.common.bean.vo.TaskVo; +//import com.ccsens.common.bean.dto.CTaskDto; +// +//import com.ccsens.common.bean.vo.CTaskVo; +// //import com.ccsens.common.service.ITaskService; //import com.ccsens.util.JsonResponse; //import com.ccsens.util.bean.dto.QueryDto; @@ -33,10 +35,10 @@ // // @MustLogin // @ApiOperation(value = "查找永久日常任务", notes = "") -// @RequestMapping(value = "/permanent", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) -// public JsonResponse> queryPermanentGlobalTask(@ApiParam @Validated @RequestBody QueryDto params) { +// @RequestMapping(value = "/permanent", method = RequestMethod.POST, produces = {"application/json;charet=UTF-8"}) +// public JsonResponse> queryPermanentGlobalTask(@ApiParam @Validated @RequestBody QueryDto params) { // log.info("查找永久日常任务开始{}",params); -// List permanentGlobalTaskList = taskService.queryPermanentGlobalTask(params.getParam(),params.getUserId()); +// List permanentGlobalTaskList = taskService.queryPermanentGlobalTask(params.getParam(),params.getUserId()); // log.info("查找永久日常任务结束{}",permanentGlobalTaskList); // return JsonResponse.newInstance().ok(permanentGlobalTaskList); // } @@ -44,9 +46,9 @@ // @MustLogin // @ApiOperation(value = "查找带时间的日常任务", notes = "") // @RequestMapping(value = "/global", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) -// public JsonResponse> queryGlobalTask(@ApiParam @Validated @RequestBody QueryDto params) { +// public JsonResponse> queryGlobalTask(@ApiParam @Validated @RequestBody QueryDto params) { // log.info("查找带时间的日常任务开始{}",params); -// List globalTask = taskService.queryGlobalTask(params.getParam(),params.getUserId()); +// List globalTask = taskService.queryGlobalTask(params.getParam(),params.getUserId()); // log.info("查找带时间的日常任务结束{}",globalTask); // return JsonResponse.newInstance().ok(globalTask); // } @@ -54,9 +56,9 @@ // @MustLogin // @ApiOperation(value = "查找带时间的定期任务", notes = "") // @RequestMapping(value = "/regular", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) -// public JsonResponse> queryRegularTask(@ApiParam @Validated @RequestBody QueryDto params) { +// public JsonResponse> queryRegularTask(@ApiParam @Validated @RequestBody QueryDto params) { // log.info("查找带时间的定期任务开始{}",params); -// List regularTask = taskService.queryRegularTask(params.getParam(), params.getUserId()); +// List regularTask = taskService.queryRegularTask(params.getParam(), params.getUserId()); // log.info("查找带时间的定期任务结束{}",regularTask); // return JsonResponse.newInstance().ok(regularTask); // } diff --git a/common/src/main/java/com/ccsens/common/bean/dto/CProjectDto.java b/common/src/main/java/com/ccsens/common/bean/dto/CProjectDto.java index dc958cb8..ed9cd35b 100644 --- a/common/src/main/java/com/ccsens/common/bean/dto/CProjectDto.java +++ b/common/src/main/java/com/ccsens/common/bean/dto/CProjectDto.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; +import java.util.List; @Data public class CProjectDto { @@ -26,4 +27,26 @@ public class CProjectDto { @ApiModelProperty("新项目名字") private String projectName; } + + @Data + @ApiModel("给模板项目添加成员") + public static class MemberForProject { + @NotNull(message = "项目id不能为空") + @ApiModelProperty("项目id") + private Long projectId; + @ApiModelProperty("成员列表") + private List memberInfoList; + } + @Data + @ApiModel("模板项目成员信息") + public static class MemberInfo { + @ApiModelProperty("用户id(医生)") + private Long userId; + @ApiModelProperty("成员名") + private String memberName; + @ApiModelProperty("成员手机号") + private String phone; + @ApiModelProperty("所属角色的名称") + private String roleName; + } } diff --git a/common/src/main/java/com/ccsens/common/bean/vo/CRoleVo.java b/common/src/main/java/com/ccsens/common/bean/vo/CRoleVo.java index e8f283b8..fc811368 100644 --- a/common/src/main/java/com/ccsens/common/bean/vo/CRoleVo.java +++ b/common/src/main/java/com/ccsens/common/bean/vo/CRoleVo.java @@ -34,4 +34,21 @@ public class CRoleVo { @ApiModelProperty("排序") private Long sequence; } + + @Data + @ApiModel("角色信息") + public static class AllRole { + @ApiModelProperty("角色id") + private Long id; + @ApiModelProperty("角色名称") + private String name; + @ApiModelProperty("角色标签id") + private Long labelId; + @ApiModelProperty("项目id") + private Long projectId; + @ApiModelProperty("标签描述") + private String description; + @ApiModelProperty("标签等级") + private Byte level; + } } diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java index bb19de43..7a3b4a54 100644 --- a/common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java @@ -3,6 +3,7 @@ package com.ccsens.common.persist.dao; import com.ccsens.common.bean.po.ProRole; import com.ccsens.common.bean.po.ProTaskSub; +import com.ccsens.common.bean.vo.CRoleVo; import com.ccsens.common.persist.mapper.ProRoleMapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -48,4 +49,19 @@ public interface ProRoleDao extends ProRoleMapper { * @param newRoleList 角色列表 */ void insertRoleList(@Param("newRoleList") List newRoleList); + + /** + * 根据角色名称和项目id查找角色信息 + * @param roleName 角色名称 + * @param projectId 项目id + * @return 角色信息 + */ + ProRole findByNameAndProjectId(@Param("roleName") String roleName,@Param("projectId") Long projectId); + + /** + * 根据角色id查询出该项目下全部角色 + * @param roleId 角色id + * @return 角色列表 + */ + List findAllRoleById(@Param("roleId") Long roleId); } diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java index 56eae8c0..f7e73b2e 100644 --- a/common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java @@ -16,23 +16,23 @@ import java.util.List; public interface ProTaskDetailDao extends ProTaskDetailMapper { /** * 根据角色查找永久日常任务 - * @param roleId 角色id + * @param roleIdList 角色id * @return 永久日常任务列表 */ - List queryPermanentGlobalTask(@Param("roleId") Long roleId); + List queryPermanentGlobalTask(@Param("roleIdList") List roleIdList); /** * 根据角色和时间节点查找日常任务 - * @param roleId 角色id + * @param roleIdList 角色id集合 * @param timeNode 时间节点 * @param timeUnit 时间颗粒度 * @return 日常任务列表 */ - List queryGlobalTask(@Param("roleId") Long roleId, @Param("timeNode") Long timeNode, @Param("timeUnit") int timeUnit); + List queryGlobalTask(@Param("roleIdList") List roleIdList, @Param("timeNode") Long timeNode, @Param("timeUnit") int timeUnit); /** * 根据时间和角色查找定期任务 - * @param roleId 角色id + * @param roleIdList 角色id集合 * @param timeUnit 时间单位 * @param timeNode 时间节点 * @param queryType 查询类型 @@ -40,12 +40,12 @@ public interface ProTaskDetailDao extends ProTaskDetailMapper { * @param timeFormat 时间格式 * @return 定期任务列表 */ - List queryRegularTask(@Param("roleId") Long roleId, @Param("timeUnit") int timeUnit, @Param("timeNode") Long timeNode + List queryRegularTask(@Param("roleId") List roleIdList, @Param("timeUnit") int timeUnit, @Param("timeNode") Long timeNode , @Param("queryType") int queryType, @Param("query") String query, @Param("timeFormat") String timeFormat); /** * 继续向上/向下查找 - * @param roleId 角色id + * @param roleIdList 角色id集合 * @param timeUnit 时间单位 * @param timeNode 时间节点 * @param queryType 查询类型 @@ -53,7 +53,7 @@ public interface ProTaskDetailDao extends ProTaskDetailMapper { * @param timeFormat 时间格式 * @return 定期任务列表 */ - List continueQueryTask(@Param("roleId") Long roleId, @Param("timeUnit") int timeUnit, @Param("timeNode") Long timeNode + List continueQueryTask(@Param("roleIdList") List roleIdList, @Param("timeUnit") int timeUnit, @Param("timeNode") Long timeNode , @Param("queryType") int queryType, @Param("query") String query, @Param("timeFormat") String timeFormat); /** diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProTaskProcessDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskProcessDao.java index 9140f091..cd75ea99 100644 --- a/common/src/main/java/com/ccsens/common/persist/dao/ProTaskProcessDao.java +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskProcessDao.java @@ -24,4 +24,12 @@ public interface ProTaskProcessDao { * @param newTaskProcessList 任务上下道工序列表 */ void insertAllTaskProcess(@Param("taskProcessList") List newTaskProcessList); + + /** + * 查找任务的下一道工序 + * @param taskDetailId 任务详情id + * @param statusOfUpdate 开始还是结束 + * @return 下到工序列表 + */ + List findNextTaskByDetailId(@Param("taskDetailId") Long taskDetailId,@Param("statusOfUpdate") Byte statusOfUpdate); } diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProTaskSubDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskSubDao.java index aee91727..a70e9d1f 100644 --- a/common/src/main/java/com/ccsens/common/persist/dao/ProTaskSubDao.java +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskSubDao.java @@ -25,4 +25,12 @@ public interface ProTaskSubDao extends ProTaskSubMapper { * @param newTaskSubList 分解任务列表 */ void insertAllTaskSub(@Param("newTaskSubList") List newTaskSubList); + + /** + * 查找下一个分解任务 + * @param nextTaskDetailId 任务详情id + * @param planTime 计划开始时间 + * @return 分解任务 + */ + ProTaskSub findNextTaskSub(@Param("nextTaskDetailId") Long nextTaskDetailId,@Param("planTime") Long planTime); } 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 a908816f..0fa00cd4 100644 --- a/common/src/main/java/com/ccsens/common/service/IProjectService.java +++ b/common/src/main/java/com/ccsens/common/service/IProjectService.java @@ -22,4 +22,10 @@ public interface IProjectService { * @return 新项目 */ CProjectVo.CopyProjectInfo copyProject(CProjectDto.CopyProject param, Long userId); + + /** + * 为复制的项目添加成员 + * @return + */ + void addMemberForCopy(CProjectDto.MemberForProject 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 0b1a3830..7f4c64f7 100644 --- a/common/src/main/java/com/ccsens/common/service/ProjectService.java +++ b/common/src/main/java/com/ccsens/common/service/ProjectService.java @@ -59,6 +59,10 @@ public class ProjectService implements IProjectService{ private LabelBusinessDao labelBusinessDao; @Resource private ProTaskVersionDao taskVersionDao; + @Resource + private ProMemberDao memberDao; + @Resource + private ProRoleMemberDao roleMemberDao; @Override public CProjectVo.ProjectInfo findProjectById(CProjectDto.ProjectById param, Long userId) { @@ -69,6 +73,36 @@ public class ProjectService implements IProjectService{ return projectById; } + @Override + public void addMemberForCopy(CProjectDto.MemberForProject param, Long userId) { + if (CollectionUtil.isNotEmpty(param.getMemberInfoList())){ + for (CProjectDto.MemberInfo memberInfo : param.getMemberInfoList()) { + //userId不为空 + ProMember member = new ProMember(); + if (ObjectUtil.isNotNull(memberInfo.getUserId())){ + member.setId(snowflake.nextId()); + member.setUserId(memberInfo.getUserId()); + member.setProjectId(param.getProjectId()); + member.setPhone(memberInfo.getPhone()); + member.setName(memberInfo.getMemberName()); + memberDao.insertSelective(member); + }else{ + member.setId(snowflake.nextId()); + member.setProjectId(param.getProjectId()); + member.setPhone(memberInfo.getPhone()); + member.setName(memberInfo.getMemberName()); + memberDao.insertSelective(member); + } + ProRole role = roleDao.findByNameAndProjectId(memberInfo.getRoleName(),param.getProjectId()); + ProRoleMember roleMember = new ProRoleMember(); + roleMember.setId(snowflake.nextId()); + roleMember.setMemberId(member.getId()); + roleMember.setRoleId(role.getId()); + roleMemberDao.insertSelective(roleMember); + } + } + } + @Override public CProjectVo.CopyProjectInfo copyProject(CProjectDto.CopyProject param, Long userId) { CProjectVo.ProjectInfo oldProject = projectDao.findProjectById(param.getProjectId()); diff --git a/common/src/main/java/com/ccsens/common/service/TaskService.java b/common/src/main/java/com/ccsens/common/service/TaskService.java index a0518383..97211665 100644 --- a/common/src/main/java/com/ccsens/common/service/TaskService.java +++ b/common/src/main/java/com/ccsens/common/service/TaskService.java @@ -6,8 +6,11 @@ import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.ObjectUtil; import com.ccsens.common.bean.dto.CTaskDto; import com.ccsens.common.bean.message.TaskMessageWithStatus; +import com.ccsens.common.bean.po.ProRole; +import com.ccsens.common.bean.po.ProTaskProcess; import com.ccsens.common.bean.po.ProTaskStatusRecord; import com.ccsens.common.bean.po.ProTaskSub; +import com.ccsens.common.bean.vo.CRoleVo; import com.ccsens.common.bean.vo.CTaskVo; import com.ccsens.common.persist.dao.*; import com.ccsens.common.persist.mapper.ProTaskStatusRecordMapper; @@ -57,6 +60,8 @@ public class TaskService implements ITaskService { private ProTaskStatusRecordMapper taskStatusRecordMapper; @Resource private AmqpTemplate rabbitTemplate; + @Resource + private ProTaskProcessDao taskProcessDao; /** * 判断当前用户的角色是否被设置不可见(是否有权限查看任务) @@ -192,7 +197,21 @@ public class TaskService implements ITaskService { if (BooleanUtil.isFalse(isLook)) { throw new BaseException(CommonCodeError.NOT_PERMISSION); } - List permanentGlobalTask = taskDetailDao.queryPermanentGlobalTask(param.getRoleId()); + //查询当前角色是否项目经理 + List roleIds = new ArrayList<>(); + List roleList = roleDao.findAllRoleById(param.getRoleId()); + if (CollectionUtil.isNotEmpty(roleList)){ + List roles = roleList.stream().filter(allRole -> allRole.getId().equals(param.getRoleId())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(roles)){ + if (Constant.ROLE_LEVEL.PM.value.equals(roles.get(0).getLevel())){ + List allRoleId = roleList.stream().map(CRoleVo.AllRole::getId).collect(Collectors.toList()); + roleIds.addAll(allRoleId); + }else{ + roleIds.add(param.getRoleId()); + } + } + } + List permanentGlobalTask = taskDetailDao.queryPermanentGlobalTask(roleIds); //查找项目面板和插件信息 queryPluginForTask(permanentGlobalTask); @@ -206,7 +225,21 @@ public class TaskService implements ITaskService { if (BooleanUtil.isFalse(isLook)) { throw new BaseException(CommonCodeError.NOT_PERMISSION); } - List globalTask = taskDetailDao.queryGlobalTask(param.getRoleId(), param.getTimeNode(), param.getTimeUnit()); + //查询当前角色是否项目经理 + List roleIds = new ArrayList<>(); + List roleList = roleDao.findAllRoleById(param.getRoleId()); + if (CollectionUtil.isNotEmpty(roleList)){ + List roles = roleList.stream().filter(allRole -> allRole.getId().equals(param.getRoleId())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(roles)){ + if (Constant.ROLE_LEVEL.PM.value.equals(roles.get(0).getLevel())){ + List allRoleId = roleList.stream().map(CRoleVo.AllRole::getId).collect(Collectors.toList()); + roleIds.addAll(allRoleId); + }else{ + roleIds.add(param.getRoleId()); + } + } + } + List globalTask = taskDetailDao.queryGlobalTask(roleIds, param.getTimeNode(), param.getTimeUnit()); queryPluginForTask(globalTask); return globalTask; } @@ -228,11 +261,25 @@ public class TaskService implements ITaskService { if (BooleanUtil.isFalse(isLook)) { throw new BaseException(CommonCodeError.NOT_PERMISSION); } + //查询当前角色是否项目经理 + List roleIds = new ArrayList<>(); + List roleList = roleDao.findAllRoleById(param.getRoleId()); + if (CollectionUtil.isNotEmpty(roleList)){ + List roles = roleList.stream().filter(allRole -> allRole.getId().equals(param.getRoleId())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(roles)){ + if (Constant.ROLE_LEVEL.PM.value.equals(roles.get(0).getLevel())){ + List allRoleId = roleList.stream().map(CRoleVo.AllRole::getId).collect(Collectors.toList()); + roleIds.addAll(allRoleId); + }else{ + roleIds.add(param.getRoleId()); + } + } + } //TODO 季度未实现 - List regularTask = taskDetailDao.queryRegularTask(param.getRoleId(), param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat); + List regularTask = taskDetailDao.queryRegularTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat); //如果该时段没有任务向上或向下补充 if (CollectionUtil.isEmpty(regularTask)) { - List replenishTask = taskDetailDao.continueQueryTask(param.getRoleId(), param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat); + 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)); @@ -422,4 +469,70 @@ public class TaskService implements ITaskService { taskStatusRecord.setUpdateStatusTime(now); taskStatusRecordMapper.insertSelective(taskStatusRecord); } + + /** + * 修改任务的真实开始时间 + * @param taskSubId 分解任务id + * @param statusOfUpdate 修改的状态(0-开始时间,1-结束时间) + */ + public void updateTaskStartTime(Long taskSubId,Byte statusOfUpdate){ + ProTaskSub proTaskSub = taskSubDao.selectByPrimaryKey(taskSubId); + if (ObjectUtil.isNull(proTaskSub)){ + throw new BaseException(CommonCodeError.TASK_SUB_NOT_FOUND); + } + Long taskDetailId = proTaskSub.getTaskDetailId(); + Long realTime = 0L; + if (0 == statusOfUpdate){ + realTime = proTaskSub.getRealStartTime(); + + } + if (1 == statusOfUpdate){ + realTime = proTaskSub.getRealEndTime(); + } + findNextTask(taskDetailId,statusOfUpdate,realTime,proTaskSub.getPlanStartTime()); + } + + /** + * + * @param taskDetailId 任务详情id + * @param statusOfUpdate 开始还是结束 + */ + private void findNextTask(Long taskDetailId,Byte statusOfUpdate,Long realTime,Long planTime){ + List taskProcessList = taskProcessDao.findNextTaskByDetailId(taskDetailId,statusOfUpdate); + if (CollectionUtil.isNotEmpty(taskProcessList)){ + for (ProTaskProcess proTaskProcess : taskProcessList) { + if (0 == statusOfUpdate){ + Long oldPlanStartTime = 0L; + ProTaskSub taskSub = taskSubDao.findNextTaskSub(proTaskProcess.getNextTaskDetailId(),planTime); + if (1 == proTaskProcess.getProcessType()){ + oldPlanStartTime = taskSub.getPlanStartTime(); + taskSub.setPlanStartTime(realTime); + taskSubDao.updateByPrimaryKeySelective(taskSub); + } + if (2 == proTaskProcess.getProcessType()){ + oldPlanStartTime = taskSub.getPlanStartTime(); + taskSub.setPlanStartTime(realTime+proTaskProcess.getTimeDifference()); + taskSubDao.updateByPrimaryKeySelective(taskSub); + } + findNextTask(taskSub.getTaskDetailId(),statusOfUpdate,taskSub.getPlanStartTime(),oldPlanStartTime); + } + if (1 == statusOfUpdate){ + Long oldPlanEndTime = 0L; + ProTaskSub taskSub = taskSubDao.findNextTaskSub(proTaskProcess.getNextTaskDetailId(), planTime); + if (4 == proTaskProcess.getProcessType()){ + oldPlanEndTime = taskSub.getPlanEndTime(); + taskSub.setPlanStartTime(realTime); + taskSubDao.updateByPrimaryKeySelective(taskSub); + } + if (5 == proTaskProcess.getProcessType()){ + oldPlanEndTime = taskSub.getPlanEndTime(); + taskSub.setPlanStartTime(realTime+proTaskProcess.getTimeDifference()); + taskSubDao.updateByPrimaryKeySelective(taskSub); + } + findNextTask(taskSub.getTaskDetailId(),statusOfUpdate,taskSub.getPlanEndTime(),oldPlanEndTime); + } + } + } + } + } diff --git a/common/src/main/java/com/ccsens/common/util/CommonCodeError.java b/common/src/main/java/com/ccsens/common/util/CommonCodeError.java index 4aeffae6..94e3f11f 100644 --- a/common/src/main/java/com/ccsens/common/util/CommonCodeError.java +++ b/common/src/main/java/com/ccsens/common/util/CommonCodeError.java @@ -13,5 +13,6 @@ public class CommonCodeError extends CodeError { public static final Code ROLE_ERROR = new Code(4,"角色信息错误!", true); public static final Code OPERATION_ERROR = new Code(5,"请选择正确的操作!", true); public static final Code PROJECT_NOT_FOUND = new Code(6,"项目不存在,请检查后再试!", true); + public static final Code TASK_SUB_NOT_FOUND = new Code(6,"分解任务不存在,请检查后再试!", true); } diff --git a/common/src/main/java/com/ccsens/common/util/Constant.java b/common/src/main/java/com/ccsens/common/util/Constant.java index acf6c162..1b6a531c 100644 --- a/common/src/main/java/com/ccsens/common/util/Constant.java +++ b/common/src/main/java/com/ccsens/common/util/Constant.java @@ -56,4 +56,16 @@ public class Constant { /**修改任务状态*/ public static final String TASK_STATUS = "taskStatus"; } + + public enum ROLE_LEVEL { + MEMBER((byte)0,"项目成员"),PM((byte)1,"项目经理"),STAKEHOLDER((byte)2,"干系人"),PIPE((byte)3,"管带") + ,GOD((byte)4,"上帝"); + + public Byte value; + public String phase; + ROLE_LEVEL(Byte value,String thePhase){ + this.value =value; + this.phase = thePhase; + } + } } diff --git a/common/src/main/resources/mapper_dao/ProRoleDao.xml b/common/src/main/resources/mapper_dao/ProRoleDao.xml index 546f3770..1bbc077f 100644 --- a/common/src/main/resources/mapper_dao/ProRoleDao.xml +++ b/common/src/main/resources/mapper_dao/ProRoleDao.xml @@ -84,4 +84,43 @@ AND project_id = #{projectId} + + + + \ No newline at end of file diff --git a/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml b/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml index dd73a968..abf78ff2 100644 --- a/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml +++ b/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml @@ -76,7 +76,10 @@ AND lt.label_type = 1 AND ts.plan_start_time = 0 AND ts.plan_duration = 0 - AND rt.role_id = #{roleId} + AND rt.role_id IN + + #{item} + ORDER BY ts.plan_start_time @@ -128,7 +131,10 @@ AND lt.label_type = 1 AND ts.plan_start_time != 0 AND ts.plan_duration != 0 - AND rt.role_id = #{roleId} + AND rt.role_id IN + + #{item} + AND ts.plan_start_time <= #{timeNode} AND ts.plan_end_time >= #{timeNode} ) AS alltask @@ -142,7 +148,7 @@ AND lltt.label_type = 0 AND llbb.business_type = 0 AND ll.`level` >= #{timeUnit} - ORDER BY ts.plan_start_time + ORDER BY alltask.planStart + + diff --git a/common/src/main/resources/mapper_dao/ProTaskSubDao.xml b/common/src/main/resources/mapper_dao/ProTaskSubDao.xml index 9e2117ff..fe1c01f9 100644 --- a/common/src/main/resources/mapper_dao/ProTaskSubDao.xml +++ b/common/src/main/resources/mapper_dao/ProTaskSubDao.xml @@ -29,4 +29,27 @@ rec_status = 0 AND task_detail_id = #{id} + + + \ No newline at end of file