From e52b68164a03de0c558d590361631c3c38e008ea Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Fri, 10 Dec 2021 18:20:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B1=E7=94=A8=E6=8E=A5=E5=8F=A3-=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BB=BB=E5=8A=A1=E6=8F=92=E4=BB=B6=E3=80=81=E7=BB=99?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=B7=BB=E5=8A=A0=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ccsens/common/bean/dto/CPluginDto.java | 30 +++++++++ .../ccsens/common/persist/dao/ProRoleDao.java | 2 +- .../common/persist/dao/ProTaskDetailDao.java | 8 +++ .../common/persist/dao/ProTaskPluginDao.java | 6 ++ .../ccsens/common/service/ITaskService.java | 8 +++ .../ccsens/common/service/TaskService.java | 65 ++++++++++++++++++- .../resources/mapper_dao/ProTaskDetailDao.xml | 18 +++++ .../resources/mapper_dao/ProTaskPluginDao.xml | 9 +++ signin/src/main/resources/application.yml | 4 +- 9 files changed, 144 insertions(+), 6 deletions(-) diff --git a/common/src/main/java/com/ccsens/common/bean/dto/CPluginDto.java b/common/src/main/java/com/ccsens/common/bean/dto/CPluginDto.java index 207ba36d..ffc3847e 100644 --- a/common/src/main/java/com/ccsens/common/bean/dto/CPluginDto.java +++ b/common/src/main/java/com/ccsens/common/bean/dto/CPluginDto.java @@ -6,6 +6,7 @@ import lombok.Data; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; +import java.util.List; /** * @author 逗 @@ -47,4 +48,33 @@ public class CPluginDto { @ApiModelProperty("跨列") private int colspan = 1; } + + @Data + @ApiModel("添加任务插件信息") + public static class SaveTaskPlugin{ + @NotNull(message = "任务详情id不能为空") + @ApiModelProperty("任务详情id") + private Long taskDetailId; + @ApiModelProperty("插件信息") + private List pluginList; + } + + @Data + @ApiModel("添加任务插件信息") + public static class PluginConfig { + @NotNull(message = "插件id不能为空") + @ApiModelProperty("插件id") + private Long pluginId; + @ApiModelProperty("参数") + private String param; + @ApiModelProperty("行") + private int row; + @ApiModelProperty("列") + private int col = 1; + @ApiModelProperty("跨行") + private int rowspan = 1; + @ApiModelProperty("跨列") + private int colspan = 1; + } + } 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 58200a33..6de50451 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 @@ -117,7 +117,7 @@ public interface ProRoleDao extends ProRoleMapper { * @param taskDetailId 任务详情id * @return 角色id */ - Long getRoleIdByTaskDetailId(@Param("taskDetailId") Long taskDetailId); + List getRoleIdByTaskDetailId(@Param("taskDetailId") Long taskDetailId); /** * 查询角色下的所有成员 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 a298c2db..3604da69 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 @@ -3,6 +3,7 @@ package com.ccsens.common.persist.dao; import com.ccsens.common.bean.dto.CTaskDto; import com.ccsens.common.bean.po.ProTaskDetail; import com.ccsens.common.bean.po.ProTaskStatusRecord; +import com.ccsens.common.bean.vo.CPluginVo; import com.ccsens.common.bean.vo.CTaskVo; import com.ccsens.common.persist.mapper.ProTaskDetailMapper; import org.apache.ibatis.annotations.Param; @@ -93,4 +94,11 @@ public interface ProTaskDetailDao extends ProTaskDetailMapper { * @return 任务列表 */ List queryTaskOfProject(CTaskDto.QueryTaskOfProject param); + + /** + * 根据任务id查询关联的插件信息 + * @param detailId 任务id + * @return 返回关联的插件信息 + */ + List queryPluginByTaskId(@Param("detailId") Long detailId); } diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProTaskPluginDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskPluginDao.java index 29f264e7..015fe1e2 100644 --- a/common/src/main/java/com/ccsens/common/persist/dao/ProTaskPluginDao.java +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskPluginDao.java @@ -32,4 +32,10 @@ public interface ProTaskPluginDao extends ProTaskPluginMapper { * @param taskPluginList 任务插件列表 */ void insertAllTaskPlugin(@Param("taskPluginList") List taskPluginList); + + /** + * 删除任务关联的插件信息 + * @param taskDetailId 任务id + */ + void delByTaskDetailId(@Param("taskDetailId") Long taskDetailId); } diff --git a/common/src/main/java/com/ccsens/common/service/ITaskService.java b/common/src/main/java/com/ccsens/common/service/ITaskService.java index d888695c..78841c3a 100644 --- a/common/src/main/java/com/ccsens/common/service/ITaskService.java +++ b/common/src/main/java/com/ccsens/common/service/ITaskService.java @@ -1,5 +1,6 @@ package com.ccsens.common.service; +import com.ccsens.common.bean.dto.CPluginDto; import com.ccsens.common.bean.dto.CTaskDto; import com.ccsens.common.bean.vo.CPluginVo; import com.ccsens.common.bean.vo.CTaskVo; @@ -88,4 +89,11 @@ public interface ITaskService { * 查看任务下的插件信息 */ List queryPluginByTaskId(CTaskDto.FindSonTask param, Long userId); + + /** + * 给任务添加关联插件 + * @param saveTaskPlugin 任务插件信息 + * @param userId userId + */ + void saveTaskPlugin(CPluginDto.SaveTaskPlugin saveTaskPlugin, Long userId); } 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 75985574..71536cd1 100644 --- a/common/src/main/java/com/ccsens/common/service/TaskService.java +++ b/common/src/main/java/com/ccsens/common/service/TaskService.java @@ -5,6 +5,7 @@ import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.ccsens.common.bean.dto.CPluginDto; import com.ccsens.common.bean.dto.CTaskDto; import com.ccsens.common.bean.message.TaskMessageWithStatus; import com.ccsens.common.bean.po.*; @@ -73,6 +74,8 @@ public class TaskService implements ITaskService { private ProRoleTaskDao roleTaskDao; @Resource private ProProjectDao proProjectDao; + @Resource + private PluginDao pluginDao; /** * 判断当前用户的角色是否被设置不可见(是否有权限查看任务) @@ -789,6 +792,12 @@ public class TaskService implements ITaskService { if (ObjectUtil.isNull(projectById)){ throw new BaseException(CommonCodeError.PROJECT_NOT_FOUND); } + //TODO 权限判断 + Integer pm = roleDao.isPmByUserId(userId, projectById.getId()); + //只有负责人或者是项目经理才能操作 + if (pm == null || pm < 1) { + throw new BaseException(CommonCodeError.NOT_PERMISSION); + } //修改任务信息 if(StrUtil.isNotBlank(param.getName())){ proTaskDetail.setName(param.getName()); @@ -830,6 +839,17 @@ public class TaskService implements ITaskService { if (ObjectUtil.isNull(proTaskDetail)) { throw new BaseException(CommonCodeError.NOT_TASK); } + //根据任务查找项目id + Long projectId = taskDetailDao.projectIdByTaskDetailId(proTaskDetail.getId()); + if (ObjectUtil.isNull(projectId)) { + throw new BaseException(CommonCodeError.NOT_TASK); + } + //权限判断 + Integer pm = roleDao.isPmByUserId(userId, projectId); + //只有负责人或者是项目经理才能操作 + if (pm == null || pm < 1) { + throw new BaseException(CommonCodeError.NOT_PERMISSION); + } //删除任务详情 proTaskDetail.setRecStatus((byte) 2); taskDetailDao.updateByPrimaryKeySelective(proTaskDetail); @@ -840,14 +860,53 @@ public class TaskService implements ITaskService { roleTaskDao.delByTaskDetailIdAndType(proTaskDetail.getId(), (byte)1); //删除任务标签信息 labelDao.delByBusinessIdAndType(proTaskDetail.getId(),(byte)0); - + //任务插件关联信息 + taskPluginDao.delByTaskDetailId(proTaskDetail.getId()); //TODO 删除任务上下级关系 //TODO 删除任务流转信息 } @Override public List queryPluginByTaskId(CTaskDto.FindSonTask param, Long userId) { - - return null; + return taskDetailDao.queryPluginByTaskId(param.getDetailId()); + } + + @Override + public void saveTaskPlugin(CPluginDto.SaveTaskPlugin saveTaskPlugin, Long userId) { + //查找任务 + ProTaskDetail proTaskDetail = taskDetailDao.selectByPrimaryKey(saveTaskPlugin.getTaskDetailId()); + if (ObjectUtil.isNull(proTaskDetail)) { + throw new BaseException(CommonCodeError.NOT_TASK); + } + //根据任务查找项目id + Long projectId = taskDetailDao.projectIdByTaskDetailId(proTaskDetail.getId()); + if (ObjectUtil.isNull(projectId)) { + throw new BaseException(CommonCodeError.NOT_TASK); + } + //权限判断 + Integer pm = roleDao.isPmByUserId(userId, projectId); + //只有负责人或者是项目经理才能操作 + if (pm == null || pm < 1) { + throw new BaseException(CommonCodeError.NOT_PERMISSION); + } + //修改插件信息 + if(CollectionUtil.isNotEmpty(saveTaskPlugin.getPluginList())){ + //删除以前的插件信息 + taskPluginDao.delByTaskDetailId(proTaskDetail.getId()); + //添加插件信息 + for (int i = 0; i < saveTaskPlugin.getPluginList().size(); i++) { + CPluginDto.PluginConfig plugin = saveTaskPlugin.getPluginList().get(i); + ProTaskPlugin proTaskPlugin = new ProTaskPlugin(); + proTaskPlugin.setId(snowflake.nextId()); + proTaskPlugin.setTaskDetailId(saveTaskPlugin.getTaskDetailId()); + proTaskPlugin.setPluginId(plugin.getPluginId()); + proTaskPlugin.setPlginRow(i + 1); + proTaskPlugin.setPlginCol(plugin.getCol()); + proTaskPlugin.setRowspan(plugin.getRowspan()); + proTaskPlugin.setColspan(plugin.getColspan()); + proTaskPlugin.setParam(plugin.getParam()); + taskPluginDao.insertSelective(proTaskPlugin); + } + } } } \ 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 3e2568fb..de7566f0 100644 --- a/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml +++ b/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml @@ -435,5 +435,23 @@ ) AND t.`name` LIKE CONCAT('%',#{name},'%') + \ No newline at end of file diff --git a/common/src/main/resources/mapper_dao/ProTaskPluginDao.xml b/common/src/main/resources/mapper_dao/ProTaskPluginDao.xml index 4f0f7670..b20101f2 100644 --- a/common/src/main/resources/mapper_dao/ProTaskPluginDao.xml +++ b/common/src/main/resources/mapper_dao/ProTaskPluginDao.xml @@ -19,6 +19,15 @@ + + update + t_pro_task_plugin + set + rec_status = 2 + where + task_detail_id = #{taskDetailId} + +