From 4bf85973d1e1fda51ab2a05cad3d036cf893db7b Mon Sep 17 00:00:00 2001 From: ma <1062634917@qq.com> Date: Fri, 30 Apr 2021 17:37:51 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9lwbs=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=B1=82=E7=BA=A7=E9=97=AE=E9=A2=98,=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E9=81=87=E5=88=B0=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ccsens/tall/bean/vo/TaskVo.java | 3 +- .../tall/persist/dao/TaskDetailDao.java | 10 ++++++- .../com/ccsens/tall/service/LwbsService.java | 7 +++++ .../tall/service/ProTaskDetailService.java | 6 ++-- .../tall/service/TaskDeliverService.java | 7 ++++- .../resources/mapper_dao/TaskDetailDao.xml | 28 +++++++++++++++++++ 6 files changed, 56 insertions(+), 5 deletions(-) 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..241d3fdd 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -850,8 +850,10 @@ 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()); + } } } 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..85612636 100644 --- a/tall/src/main/resources/mapper_dao/TaskDetailDao.xml +++ b/tall/src/main/resources/mapper_dao/TaskDetailDao.xml @@ -660,6 +660,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 +798,31 @@ AND tst.begin_time >= #{startTime} AND tst.end_time <= #{endTime} + + \ No newline at end of file From be0e781cab1c2b44c93e65b90efedafd2cda64ed Mon Sep 17 00:00:00 2001 From: hyy-alt <1041001226@qq.com> Date: Fri, 30 Apr 2021 18:09:19 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=8F=E7=90=86=E4=B8=8B=E7=9A=84=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tall/service/ProTaskDetailService.java | 63 +++++++++++++++++++ .../resources/mapper_dao/TaskDetailDao.xml | 1 + 2 files changed, 64 insertions(+) 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 6d3568e5..c9210968 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -28,9 +28,11 @@ import com.ccsens.util.exception.BaseException; import com.fasterxml.jackson.annotation.JsonFormat; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.sun.xml.internal.fastinfoset.util.ValueArrayResourceException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.apache.ibatis.annotations.Param; +import org.apache.poi.hssf.record.DVALRecord; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -202,6 +204,30 @@ 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()); + } + } + + //firstTaskDetail.getProjectId(); //项目id + //firstTaskDetail.getExecutorRole(); //负责人id + //firstTaskDetail.getCheckerRole(); //检查人id + // 查询任务对应的配置 ProPluginConfigExample configExample = new ProPluginConfigExample(); configExample.createCriteria().andTaskIdEqualTo(firstTaskDetail.getId()).andPlaceLocationEqualTo((byte) 0); @@ -230,6 +256,43 @@ 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()); + } + } + } + + //处理插件 managePlugin(currentUserId, roleId, task, imitation); //二级任务完成状态 diff --git a/tall/src/main/resources/mapper_dao/TaskDetailDao.xml b/tall/src/main/resources/mapper_dao/TaskDetailDao.xml index bb00af62..e9d54333 100644 --- a/tall/src/main/resources/mapper_dao/TaskDetailDao.xml +++ b/tall/src/main/resources/mapper_dao/TaskDetailDao.xml @@ -162,6 +162,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, From 172e3bd2df3e891a070c8fd9ba88aa0c84a912fb Mon Sep 17 00:00:00 2001 From: ma <1062634917@qq.com> Date: Thu, 6 May 2021 11:02:17 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E4=B8=8D=E8=BF=94=E5=9B=9E=E7=88=B6=E4=BB=BB=E5=8A=A1=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tall/service/ProTaskDetailService.java | 57 ++++++++++++++----- .../resources/mapper_dao/TaskDetailDao.xml | 7 ++- 2 files changed, 48 insertions(+), 16 deletions(-) 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 f6eb89b8..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,20 +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 com.sun.xml.internal.fastinfoset.util.ValueArrayResourceException; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringUtils; -import org.apache.ibatis.annotations.Param; -import org.apache.poi.hssf.record.DVALRecord; 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.*; @@ -212,19 +200,28 @@ public class ProTaskDetailService implements IProTaskDetailService { 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 @@ -279,19 +276,28 @@ public class ProTaskDetailService implements IProTaskDetailService { 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()); + } + } } @@ -497,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); @@ -517,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); @@ -918,6 +939,14 @@ public class ProTaskDetailService implements IProTaskDetailService { 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()); + } + } } return taskDetail; diff --git a/tall/src/main/resources/mapper_dao/TaskDetailDao.xml b/tall/src/main/resources/mapper_dao/TaskDetailDao.xml index c312eae3..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 @@ -255,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