diff --git a/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java b/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java index 17876277..e1d61885 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java +++ b/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java @@ -13,6 +13,7 @@ import lombok.Setter; import javax.validation.constraints.NotNull; import java.io.ByteArrayInputStream; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; @Data @@ -148,7 +149,7 @@ public class TaskVo { @ApiModelProperty("插件") private List plugins; @ApiModelProperty("二级任务") - private List secondTasks; + private List secondTasks = new ArrayList<>(); @ApiModelProperty("时间状态 0:正常 1:任务开始 2:任务结束") private Byte timeStatus = 0; @ApiModelProperty("当前周期内任务的序号") diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java index c8cdff27..359110b8 100644 --- a/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java +++ b/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java @@ -68,7 +68,8 @@ public interface TaskDetailDao extends ProTaskDetailMapper { * @param startTime 开始时间 * @param endTime 结束时间 * @param userId 当前用户的userId - * @return + * @param roleIds 角色id + * @return lwb任务 */ List queryLwbsByProjectId(@Param("projectId")Long projectId, @Param("startTime")Long startTime, @Param("endTime")Long endTime, @Param("userId")Long userId,@Param("roleIds") List roleIds); @@ -95,4 +96,11 @@ public interface TaskDetailDao extends ProTaskDetailMapper { * @return 分解任务 List */ List selectTaskByExecutorRoleId(@Param("roleIds") List roleIds,@Param("startTime") Long startTime,@Param("endTime") Long endTime); + + /** + * 根据任务详情id查询二级任务 + * @param detailId 任务详情id + * @return 二级任务 + */ + List getSecondTasks(Long detailId); } diff --git a/tall/src/main/java/com/ccsens/tall/service/LwbsService.java b/tall/src/main/java/com/ccsens/tall/service/LwbsService.java index 40661c1d..257a3f5a 100644 --- a/tall/src/main/java/com/ccsens/tall/service/LwbsService.java +++ b/tall/src/main/java/com/ccsens/tall/service/LwbsService.java @@ -117,6 +117,13 @@ public class LwbsService implements ILwbsService{ TaskUtil.Task task = TaskUtil.splitTask(taskList, param.getStartTime(), param.getEndTime(), param.getProcess()); proTaskInfo.setGlobalTaskList(task.getGlobal()); proTaskInfo.setNormalTaskList(task.getCommonTask()); + //查看普通任务下是否有子任务 + if (CollectionUtil.isNotEmpty(proTaskInfo.getNormalTaskList())){ + for (TaskVo.NormalTask normalTask : proTaskInfo.getNormalTaskList()) { + List secondTasks = taskDetailDao.getSecondTasks(normalTask.getDetailId()); + normalTask.getSecondTasks().addAll(secondTasks); + } + } } } return proTaskInfo; diff --git a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java index 3e76ad57..3e902ef2 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -5,18 +5,12 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONObject; -import com.ccsens.cloudutil.feign.MtFeignClient; -import com.ccsens.tall.bean.dto.ProjectDto; import com.ccsens.tall.bean.dto.TaskDto; import com.ccsens.tall.bean.po.*; import com.ccsens.tall.bean.vo.*; import com.ccsens.tall.persist.dao.*; import com.ccsens.tall.persist.dao.ProTaskShowDao; -import com.ccsens.tall.persist.mapper.ProPluginConfigMapper; import com.ccsens.tall.persist.mapper.ProTaskDeliverMapper; -import com.ccsens.tall.persist.mapper.ProTaskInputDocMapper; -import com.ccsens.tall.util.TallConstant; import com.ccsens.tall.util.TaskUtil; import com.ccsens.util.CodeEnum; import com.ccsens.util.DateUtil; @@ -25,18 +19,14 @@ import com.ccsens.util.WebConstant; import com.ccsens.util.cron.CronConstant; import com.ccsens.util.cron.NatureToDate; import com.ccsens.util.exception.BaseException; -import com.fasterxml.jackson.annotation.JsonFormat; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringUtils; -import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.math.BigDecimal; import java.util.*; @@ -204,6 +194,39 @@ public class ProTaskDetailService implements IProTaskDetailService { normalTask.setDetailId(firstTaskDetail.getId()); normalTask.setId(taskDeliverService.isTaskOrSubTime(firstTaskDetail.getId())); normalTask.setSequence(sequence); + if(ObjectUtil.isNotNull(firstTaskDetail.getProjectId())){ + SysProject sysProject = sysProjectDao.selectByPrimaryKey(firstTaskDetail.getProjectId()); + if(ObjectUtil.isNotNull(sysProject)){ + normalTask.setProjectName(sysProject.getName()); + } + } + //负责人 + if(ObjectUtil.isNotNull(firstTaskDetail.getExecutorRole())){ + ProRole proRole = proRoleDao.selectByPrimaryKey(firstTaskDetail.getExecutorRole()); + if(ObjectUtil.isNotNull(proRole)){ + normalTask.setExecutorRoleName(proRole.getName()); + } + } + //检查人 + if(ObjectUtil.isNotNull(firstTaskDetail.getCheckerRole())){ + ProRole proRole = proRoleDao.selectByPrimaryKey(firstTaskDetail.getCheckerRole()); + if(ObjectUtil.isNotNull(proRole)){ + normalTask.setCheckerRoleName(proRole.getName()); + } + } + //查询当前任务的父任务 + if(null != firstTaskDetail.getParentId() && 0 != firstTaskDetail.getParentId()){ + ProTaskDetail parentTask = taskDetailDao.selectByPrimaryKey(firstTaskDetail.getParentId()); + if(ObjectUtil.isNotNull(parentTask)){ + normalTask.setParentId(parentTask.getId()); + normalTask.setParentName(parentTask.getName()); + } + } + + //firstTaskDetail.getProjectId(); //项目id + //firstTaskDetail.getExecutorRole(); //负责人id + //firstTaskDetail.getCheckerRole(); //检查人id + // 查询任务对应的配置 ProPluginConfigExample configExample = new ProPluginConfigExample(); configExample.createCriteria().andTaskIdEqualTo(firstTaskDetail.getId()).andPlaceLocationEqualTo((byte) 0); @@ -232,6 +255,52 @@ public class ProTaskDetailService implements IProTaskDetailService { // if (ObjectUtil.isNotNull(score)) { // task.setScore(score); // } + ProTaskDetail proTaskDetail = taskDetailDao.selectByPrimaryKey(task.getDetailId()); + if(ObjectUtil.isNotNull(proTaskDetail.getParentId())){ + task.setParentId(proTaskDetail.getParentId()); + ProTaskDetail proTaskDetail1 = taskDetailDao.selectByPrimaryKey(proTaskDetail.getParentId()); + if(ObjectUtil.isNotNull(proTaskDetail1)){ + task.setParentName(proTaskDetail1.getName()); + } + }else{ + task.setParentId(proTaskDetail.getParentId()); + } + + if(ObjectUtil.isNotNull(proTaskDetail)){ + //proTaskDetail.getProjectId()//项目id + //proTaskDetail.getCheckerRole(); //检查人id + //proTaskDetail.getExecutorRole(); // 负责人id + if(ObjectUtil.isNotNull(proTaskDetail.getProjectId())){ + SysProject sysProject = sysProjectDao.selectByPrimaryKey(proTaskDetail.getProjectId()); + if(ObjectUtil.isNotNull(sysProject)){ + task.setProjectName(sysProject.getName()); + } + } + //检查人 + if(ObjectUtil.isNotNull(proTaskDetail.getCheckerRole())){ + ProRole proRole = proRoleDao.selectByPrimaryKey(proTaskDetail.getCheckerRole()); + if(ObjectUtil.isNotNull(proRole)){ + task.setExecutorRoleName(proRole.getName()); + } + } + //负责人 + if(ObjectUtil.isNotNull(proTaskDetail.getExecutorRole())){ + ProRole proRole = proRoleDao.selectByPrimaryKey(proTaskDetail.getExecutorRole()); + if(ObjectUtil.isNotNull(proRole)){ + task.setCheckerRoleName(proRole.getName()); + } + } + //查询当前任务的父任务 + if(null != proTaskDetail.getParentId() && 0 != proTaskDetail.getParentId()){ + ProTaskDetail parentTask = taskDetailDao.selectByPrimaryKey(proTaskDetail.getParentId()); + if(ObjectUtil.isNotNull(parentTask)){ + task.setParentId(parentTask.getId()); + task.setParentName(parentTask.getName()); + } + } + } + + //处理插件 managePlugin(currentUserId, roleId, task, imitation); //二级任务完成状态 @@ -434,6 +503,13 @@ public class ProTaskDetailService implements IProTaskDetailService { // normalTask.setScore(score); // } // } + //查找所属项目名 + if (null!=normalTask.getProjectId() && 0!=normalTask.getProjectId()){ + SysProject project = sysProjectDao.selectByPrimaryKey(normalTask.getProjectId()); + if (ObjectUtil.isNotNull(project)){ + normalTask.setProjectName(project.getName()); + } + } //通过角色id查找 负责人名称 检查人名称 Long executorRole = normalTask.getExecutorRole(); ProRole executor = proRoleDao.selectByPrimaryKey(executorRole); @@ -454,6 +530,14 @@ public class ProTaskDetailService implements IProTaskDetailService { normalTask.setCheckerRoleName(proRole.getName()); } + //查询当前任务的父任务 + if(null != normalTask.getParentId() && 0 != normalTask.getParentId()){ + ProTaskDetail parentTask = taskDetailDao.selectByPrimaryKey(normalTask.getParentId()); + if(ObjectUtil.isNotNull(parentTask)){ + normalTask.setParentId(parentTask.getId()); + normalTask.setParentName(parentTask.getName()); + } + } //处理插件 managePlugin(currentUserId, roleId, normalTask, imitation); @@ -850,8 +934,18 @@ public class ProTaskDetailService implements IProTaskDetailService { //根据任务id查询项目下项目经理 Long pmId = taskDetailDao.selectPmByTaskId(task.getId()); ProRole proRole = proRoleDao.selectByPrimaryKey(pmId); - taskDetail.setCheckerRole(proRole.getId()); - taskDetail.setCheckerRoleName(proRole.getName()); + if (ObjectUtil.isNotNull(proRole)){ + taskDetail.setCheckerRole(proRole.getId()); + taskDetail.setCheckerRoleName(proRole.getName()); + } + } + //查询当前任务的父任务 + if(null != taskDetail.getParentId() && 0 != taskDetail.getParentId()){ + ProTaskDetail parentTask = taskDetailDao.selectByPrimaryKey(taskDetail.getParentId()); + if(ObjectUtil.isNotNull(parentTask)){ + taskDetail.setParentId(parentTask.getId()); + taskDetail.setParentName(parentTask.getName()); + } } } diff --git a/tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java b/tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java index b02f2691..5d1cedd7 100644 --- a/tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java +++ b/tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java @@ -1254,14 +1254,19 @@ public class TaskDeliverService implements ITaskDeliverService { //查找任务详情id Long taskDetailId = null; + //查找项目id + Long projectId = null; + ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(param.getTaskId()); if(ObjectUtil.isNotNull(taskDetail)){ taskDetailId = taskDetail.getId(); + projectId = taskDetail.getProjectId(); }else { ProTaskSubTime proTaskSubTime = taskSubTimeDao.selectByPrimaryKey(param.getTaskId()); if(ObjectUtil.isNotNull(proTaskSubTime)){ ProTaskDetail task = taskDetailDao.selectByPrimaryKey(proTaskSubTime.getTaskDetailId()); if(ObjectUtil.isNotNull(task)){ + projectId = task.getId(); taskDetailId = task.getId(); } } @@ -1288,7 +1293,7 @@ public class TaskDeliverService implements ITaskDeliverService { taskDeliverDao.insertSelective(proTaskDeliver); } - normalTask = taskDetailService.getTaskInfoByTaskId(userId, taskDetail.getProjectId(), param.getTaskId(), null); + normalTask = taskDetailService.getTaskInfoByTaskId(userId, projectId, param.getTaskId(), null); return normalTask; } diff --git a/tall/src/main/resources/mapper_dao/TaskDetailDao.xml b/tall/src/main/resources/mapper_dao/TaskDetailDao.xml index f72b8f26..0558492a 100644 --- a/tall/src/main/resources/mapper_dao/TaskDetailDao.xml +++ b/tall/src/main/resources/mapper_dao/TaskDetailDao.xml @@ -40,6 +40,7 @@ + @@ -97,7 +98,8 @@ sp.id as spid, sp.show_type as spShowType, d.priority as priority, - d.milestone as milestone + d.milestone as milestone, + d.parent_id AS tParentId FROM t_pro_task_sub_time s LEFT JOIN t_pro_task_detail d ON s.task_detail_id = d.id LEFT JOIN t_pro_task_plugin p ON p.task_detail_id = d.id @@ -162,6 +164,7 @@ d.project_id as tProjectId, d.description as tDescription, d.executor_role as tExecutorRole, + d.checker_role as checkerRole, s.begin_time as tBeginTime, s.end_time as tEndTime, d.cycle as tCycle, @@ -254,7 +257,8 @@ sp.description as spDescription, sp.id as spid, sp.show_type as spShowType, - d.milestone as milestone + d.milestone as milestone, + d.parent_id AS tParentId FROM t_pro_task_sub_time s LEFT JOIN t_pro_task_detail d ON s.task_detail_id = d.id LEFT JOIN t_pro_task_plugin p ON p.task_detail_id = d.id @@ -660,6 +664,7 @@ s.rec_status = 0 and d.executor_role = #{userId} AND d.project_id = 0 + AND d.parent_id = 0 order by s.begin_time )t LEFT JOIN @@ -797,4 +802,31 @@ AND tst.begin_time >= #{startTime} AND tst.end_time <= #{endTime} + + \ No newline at end of file