diff --git a/common/src/main/java/com/ccsens/common/bean/vo/TaskVo.java b/common/src/main/java/com/ccsens/common/bean/vo/TaskVo.java index df276032..2b667e96 100644 --- a/common/src/main/java/com/ccsens/common/bean/vo/TaskVo.java +++ b/common/src/main/java/com/ccsens/common/bean/vo/TaskVo.java @@ -65,9 +65,9 @@ public class TaskVo { @ApiModel("任务下的插件信息") public static class TaskPluginInfo{ @ApiModelProperty("插件id") - private int pluginId; + private Long pluginId; @ApiModelProperty("参数") - private int param; + private String param; @ApiModelProperty("行") private int row; @ApiModelProperty("列") 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 c12331f2..7ffc18bc 100644 --- a/common/src/main/java/com/ccsens/common/service/TaskService.java +++ b/common/src/main/java/com/ccsens/common/service/TaskService.java @@ -55,7 +55,7 @@ public class TaskService implements ITaskService{ byte visitor = 0; Long projectId = roleDao.findRoleOfProjectId(roleId); if (ObjectUtil.isNull(projectId)){ - throw new BaseException("角色信息错误!"); + throw new BaseException(CommonCodeError.ROLE_ERROR); } Long memberId = memberDao.findUserOfMemberId(projectId,userId); //不是项目成员则为游客 @@ -89,42 +89,90 @@ public class TaskService implements ITaskService{ */ public void queryPluginForTask(List taskList){ if (CollectionUtil.isNotEmpty(taskList)){ - List> plugins = new ArrayList<>(); for (TaskVo.QueryTask queryTask : taskList) { + List> plugins = new ArrayList<>(); + //如果任务面板信息不为空,则根据任务面板的行/列创建二维数组 if (ObjectUtil.isNotNull(queryTask.getPanel())){ int panelRow = queryTask.getPanel().getRow(); int panelCol = queryTask.getPanel().getCol(); - //创建任务面板的二维数组 - for (int i = 0; i < panelRow; i++) { - List pluginInfoList = new ArrayList<>(); - for (int j = 0; j < panelCol; j++) { - pluginInfoList.add(null); - } - plugins.add(pluginInfoList); - } - //将插件放入二维数组对应的位置中 - List taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getDetailId()); - for (TaskVo.TaskPluginInfo taskPlugin : taskPluginInfoList) { - int pluginCol = taskPlugin.getCol(); - int pluginRow = taskPlugin.getRow(); - plugins.get(pluginRow - 1).set(pluginCol-1,taskPlugin); + if (0 != panelRow && 0 != panelCol){ + //创建任务面板的二维数组 + createSecondPanel(plugins,panelRow,panelCol); + //将插件放入二维数组对应的位置中 + List taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getDetailId()); + putDateInList(taskPluginInfoList,plugins,queryTask); + }else{ + //根据插件最大的行和列创建二维数组 + createPanelByPlugin(queryTask.getDetailId(),plugins,queryTask); } }else { - List taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getDetailId()); - plugins.add(taskPluginInfoList); + //根据插件最大的行和列创建二维数组 + createPanelByPlugin(queryTask.getDetailId(),plugins,queryTask); } - queryTask.setPlugins(plugins); } } } + /** + * 根据插件的最大行列创建面板 + * @param taskDetailId 任务详情id + * @param plugins 插件列表 + * @param queryTask 任务 + */ + public void createPanelByPlugin(Long taskDetailId,List> plugins,TaskVo.QueryTask queryTask){ + List taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(taskDetailId); + if (CollectionUtil.isNotEmpty(taskPluginInfoList)){ + List col = taskPluginInfoList.stream().map(TaskVo.TaskPluginInfo::getCol).collect(Collectors.toList()); + List row = taskPluginInfoList.stream().map(TaskVo.TaskPluginInfo::getRow).collect(Collectors.toList()); + Integer newCol = Collections.max(col); + Integer newRow = Collections.max(row); + //创建任务面板的二维数组 + createSecondPanel(plugins,newRow,newCol); + //将插件放入二维数组对应的位置中 + putDateInList(taskPluginInfoList,plugins,queryTask); + } + } + + /** + * 创建面板 + * @param plugins 插件列表 + * @param row 行 + * @param col 列 + */ + public void createSecondPanel(List> plugins,int row,int col){ + for (int i = 0; i < row; i++) { + List pluginInfoList = new ArrayList<>(); + for (int j = 0; j < col; j++) { + pluginInfoList.add(null); + } + plugins.add(pluginInfoList); + } + } + + /** + * 向空面板里插入插件详情 + * @param taskPluginInfoList 插件详情列表 + * @param plugins 插件列表 + * @param queryTask 任务 + */ + public void putDateInList(List taskPluginInfoList,List> plugins,TaskVo.QueryTask queryTask){ + for (TaskVo.TaskPluginInfo taskPlugin : taskPluginInfoList) { + int pluginCol = taskPlugin.getCol(); + int pluginRow = taskPlugin.getRow(); + if (0 == pluginCol || 0 == pluginRow) { + continue; + } + plugins.get(pluginRow - 1).set(pluginCol - 1, taskPlugin); + } + queryTask.setPlugins(plugins); + } @Override public List queryPermanentGlobalTask(TaskDto.QueryPermanentGlobalTask param, Long userId) { - //查找角色权限 + //查找当前角色是否有查看权限 Boolean isLook = queryRoleIsLook(param.getRoleId(),userId); if (BooleanUtil.isFalse(isLook)){ - throw new BaseException("没有查看权限!"); + throw new BaseException(CommonCodeError.NOT_PERMISSION); } List permanentGlobalTask = taskDetailDao.queryPermanentGlobalTask(param.getRoleId()); //查找项目面板和插件信息 @@ -135,10 +183,10 @@ public class TaskService implements ITaskService{ @Override public List queryGlobalTask(TaskDto.QueryGlobalTask param, Long userId) { - //查找角色权限 + //查找当前角色是否有查看权限 Boolean isLook = queryRoleIsLook(param.getRoleId(),userId); if (BooleanUtil.isFalse(isLook)){ - throw new BaseException("没有查看权限!"); + throw new BaseException(CommonCodeError.NOT_PERMISSION); } List globalTask = taskDetailDao.queryGlobalTask(param.getRoleId(),param.getTimeNode(),param.getTimeUnit()); queryPluginForTask(globalTask); @@ -157,10 +205,10 @@ public class TaskService implements ITaskService{ }else{ query +="interval "+(param.getQueryNum()-1)+" "+unit; } - //查找角色权限 + //查找当前角色是否有查看权限 Boolean isLook = queryRoleIsLook(param.getRoleId(),userId); if (BooleanUtil.isFalse(isLook)){ - throw new BaseException("没有查看权限!"); + throw new BaseException(CommonCodeError.NOT_PERMISSION); } //TODO 季度未实现 List regularTask = taskDetailDao.queryRegularTask(param.getRoleId(),param.getTimeUnit(),param.getTimeNode(),param.getQueryType(),query,timeFormat); @@ -186,6 +234,7 @@ public class TaskService implements ITaskService{ queryPluginForTask(replenishTask); return replenishTask; } + queryPluginForTask(regularTask); return regularTask; } 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 a54889a9..53c5bb4e 100644 --- a/common/src/main/java/com/ccsens/common/util/CommonCodeError.java +++ b/common/src/main/java/com/ccsens/common/util/CommonCodeError.java @@ -9,5 +9,7 @@ public class CommonCodeError extends CodeError { public static final Code TASK_VITAL_LABEL_ERROR = new Code(1,"任务标签异常", true); public static final Code NOT_TASK = new Code(2,"未找到对应任务", true); + public static final Code NOT_PERMISSION = new Code(3,"没有权限!", true); + public static final Code ROLE_ERROR = new Code(4,"角色信息错误!", true); } diff --git a/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml b/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml index 02826fee..9207fd98 100644 --- a/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml +++ b/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml @@ -66,7 +66,7 @@ AND rt.role_id = #{roleId} - SELECT alltask.* FROM @@ -130,7 +130,7 @@ AND ll.`level` >= #{timeUnit} - SELECT alltask.* FROM @@ -206,7 +206,7 @@ AND ll.`level` >= #{timeUnit} - SELECT alltask.* FROM