31 changed files with 1278 additions and 12 deletions
@ -0,0 +1,41 @@ |
|||
package com.ccsens.common.api; |
|||
|
|||
import com.ccsens.common.bean.dto.ProjectDto; |
|||
import com.ccsens.common.bean.vo.ProjectVo; |
|||
import com.ccsens.common.service.IProjectService; |
|||
import com.ccsens.util.JsonResponse; |
|||
import com.ccsens.util.bean.dto.QueryDto; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import io.swagger.annotations.ApiParam; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RequestMethod; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import javax.annotation.Resource; |
|||
|
|||
/** |
|||
* @author ma |
|||
*/ |
|||
@Api(tags = "项目相关接口", description = "ProjectController | 项目相关接口") |
|||
@RestController |
|||
@Slf4j |
|||
@RequestMapping("/project") |
|||
public class ProjectController { |
|||
|
|||
@Resource |
|||
private IProjectService projectService; |
|||
|
|||
@ApiOperation(value = "根据id查询项目信息", notes = "根据id查询项目信息") |
|||
@RequestMapping(value = "/findProjectById", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
|||
public JsonResponse<ProjectVo.ProjectInfo> findProjectById(@ApiParam @Validated @RequestBody QueryDto<ProjectDto.ProjectById> params) throws Exception{ |
|||
log.info("根据id查询项目信息:{}",params); |
|||
ProjectVo.ProjectInfo projectInfo = projectService.findProjectById(params.getParam(),params.getUserId()); |
|||
log.info("根据id查询项目信息"); |
|||
return JsonResponse.newInstance().ok(projectInfo); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,64 @@ |
|||
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.service.ITaskService; |
|||
import com.ccsens.util.JsonResponse; |
|||
import com.ccsens.util.bean.dto.QueryDto; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import io.swagger.annotations.ApiParam; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RequestMethod; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author 逗 |
|||
*/ |
|||
@Api(tags = "DEBUG" , description = "DebugController | ") |
|||
@RestController |
|||
@RequestMapping("/task") |
|||
@Slf4j |
|||
public class TaskController { |
|||
|
|||
@Resource |
|||
private ITaskService taskService; |
|||
|
|||
@MustLogin |
|||
@ApiOperation(value = "查找永久日常任务", notes = "") |
|||
@RequestMapping(value = "/permanent", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
|||
public JsonResponse<List<TaskVo.QueryTask>> queryPermanentGlobalTask(@ApiParam @Validated @RequestBody QueryDto<TaskDto.QueryPermanentGlobalTask> params) { |
|||
log.info("查找永久日常任务开始{}",params); |
|||
List<TaskVo.QueryTask> permanentGlobalTaskList = taskService.queryPermanentGlobalTask(params.getParam(),params.getUserId()); |
|||
log.info("查找永久日常任务结束{}",permanentGlobalTaskList); |
|||
return JsonResponse.newInstance().ok(permanentGlobalTaskList); |
|||
} |
|||
|
|||
@MustLogin |
|||
@ApiOperation(value = "查找带时间的日常任务", notes = "") |
|||
@RequestMapping(value = "/global", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
|||
public JsonResponse<List<TaskVo.QueryTask>> queryGlobalTask(@ApiParam @Validated @RequestBody QueryDto<TaskDto.QueryGlobalTask> params) { |
|||
log.info("查找带时间的日常任务开始{}",params); |
|||
List<TaskVo.QueryTask> globalTask = taskService.queryGlobalTask(params.getParam(),params.getUserId()); |
|||
log.info("查找带时间的日常任务结束{}",globalTask); |
|||
return JsonResponse.newInstance().ok(globalTask); |
|||
} |
|||
|
|||
@MustLogin |
|||
@ApiOperation(value = "查找带时间的定期任务", notes = "") |
|||
@RequestMapping(value = "/regular", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
|||
public JsonResponse<List<TaskVo.QueryTask>> queryRegularTask(@ApiParam @Validated @RequestBody QueryDto<TaskDto.QueryRegularTask> params) { |
|||
log.info("查找带时间的定期任务开始{}",params); |
|||
|
|||
log.info("查找带时间的定期任务结束{}"); |
|||
return JsonResponse.newInstance().ok(); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,19 @@ |
|||
package com.ccsens.common.bean.dto; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
|
|||
@Data |
|||
public class ProjectDto { |
|||
|
|||
@Data |
|||
@ApiModel("根据id查找项目信息") |
|||
public static class ProjectById { |
|||
@NotNull(message = "请选择项目") |
|||
@ApiModelProperty("项目id") |
|||
private Long projectId; |
|||
} |
|||
} |
@ -0,0 +1,61 @@ |
|||
package com.ccsens.common.bean.dto; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
|
|||
/** |
|||
* @author 逗 |
|||
*/ |
|||
@Data |
|||
public class TaskDto { |
|||
|
|||
@Data |
|||
@ApiModel("查看永久日常任务") |
|||
public static class QueryPermanentGlobalTask{ |
|||
@NotNull(message = "角色id不能为空") |
|||
@ApiModelProperty("角色id") |
|||
private Long roleId; |
|||
} |
|||
|
|||
@Data |
|||
@ApiModel("查看带时间的日常任务") |
|||
public static class QueryGlobalTask{ |
|||
@NotNull(message = "角色id不能为空") |
|||
@ApiModelProperty("角色id") |
|||
private Long roleId; |
|||
@ApiModelProperty("时间基准点 默认当前") |
|||
private Long timeNode = System.currentTimeMillis(); |
|||
@ApiModelProperty("时间基准点 默认天") |
|||
private int timeUnit = 4; |
|||
} |
|||
|
|||
@Data |
|||
@ApiModel("查看定期任务") |
|||
public static class QueryRegularTask{ |
|||
@NotNull(message = "角色id不能为空") |
|||
@ApiModelProperty("角色id") |
|||
private Long roleId; |
|||
@ApiModelProperty("时间基准点 默认当前") |
|||
private Long timeNode = System.currentTimeMillis(); |
|||
@ApiModelProperty("时间基准点 默认天") |
|||
private int timeUnit; |
|||
@ApiModelProperty("0向上查找 1向下查找(默认) 下查包含自己,上查不包含") |
|||
private int queryType = 1; |
|||
@ApiModelProperty("查找颗粒度数量 默认3个") |
|||
private int queryNum = 3; |
|||
} |
|||
|
|||
@Data |
|||
@ApiModel("修改任务状态") |
|||
public static class UpdateTaskType{ |
|||
@NotNull(message = "任务id不能为空") |
|||
@ApiModelProperty("任务分解id") |
|||
private Long id; |
|||
@ApiModelProperty("0开始 1暂停 2继续 3完成 默认0") |
|||
private int type; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,40 @@ |
|||
package com.ccsens.common.bean.vo; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
|
|||
/** |
|||
* @author AUSU |
|||
*/ |
|||
@Data |
|||
public class ProjectVo { |
|||
@Data |
|||
@ApiModel("项目信息") |
|||
public static class ProjectInfo{ |
|||
@ApiModelProperty("项目id(任务详情id)") |
|||
private Long id; |
|||
@ApiModelProperty("项目名称") |
|||
private String name; |
|||
@ApiModelProperty("项目描述") |
|||
private String description; |
|||
@ApiModelProperty("重复频率") |
|||
private String cycle; |
|||
@ApiModelProperty("重复频率") |
|||
private String planStartTime; |
|||
@ApiModelProperty("重复频率") |
|||
private String planDuration; |
|||
@ApiModelProperty("重复频率") |
|||
private String planEndTime; |
|||
@ApiModelProperty("重复频率") |
|||
private String realStartTime; |
|||
@ApiModelProperty("重复频率") |
|||
private String realDuration; |
|||
@ApiModelProperty("重复频率") |
|||
private String realEndTime; |
|||
|
|||
|
|||
} |
|||
} |
@ -0,0 +1,80 @@ |
|||
package com.ccsens.common.bean.vo; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
|
|||
@Data |
|||
public class TaskVo { |
|||
@Data |
|||
@ApiModel("查看定期任务返回值") |
|||
public static class QueryTask{ |
|||
@ApiModelProperty("任务id(任务分解id)") |
|||
private Long id; |
|||
@ApiModelProperty("详情id") |
|||
private Long detailId; |
|||
@ApiModelProperty("任务名") |
|||
private String name; |
|||
@ApiModelProperty("任务详情") |
|||
private String description; |
|||
@ApiModelProperty("计划开始时间") |
|||
private Long planStart; |
|||
@ApiModelProperty("计划时长") |
|||
private Long planDuration; |
|||
@ApiModelProperty("实际开始时间") |
|||
private Long realStart; |
|||
@ApiModelProperty("实际时长") |
|||
private Long realDuration; |
|||
@ApiModelProperty("任务状态 0未开始 1进行中 2暂停中 3已完成") |
|||
private int process; |
|||
@ApiModelProperty("任务流转策略 -1不跳转 0直接跳转 如果是其他正整数 就是多少毫秒后跳转 ") |
|||
private Long skip; |
|||
@ApiModelProperty("跳转的任务id") |
|||
private Long skipTaskId; |
|||
@ApiModelProperty("任务面板") |
|||
private PanelInfo panel; |
|||
@ApiModelProperty("插件") |
|||
private List<List<TaskPluginInfo>> plugins; |
|||
} |
|||
|
|||
@Data |
|||
@ApiModel("任务面板信息") |
|||
public static class PanelInfo{ |
|||
@ApiModelProperty("背景色") |
|||
private String backgroundColor; |
|||
@ApiModelProperty("圆角") |
|||
private String borderRadius; |
|||
@ApiModelProperty("边框") |
|||
private String border; |
|||
@ApiModelProperty("阴影") |
|||
private String shadow; |
|||
@ApiModelProperty("宽") |
|||
private String width; |
|||
@ApiModelProperty("高") |
|||
private String height; |
|||
@ApiModelProperty("行") |
|||
private int row; |
|||
@ApiModelProperty("列") |
|||
private int col; |
|||
} |
|||
|
|||
@Data |
|||
@ApiModel("任务下的插件信息") |
|||
public static class TaskPluginInfo{ |
|||
@ApiModelProperty("插件id") |
|||
private Long pluginId; |
|||
@ApiModelProperty("参数") |
|||
private String param; |
|||
@ApiModelProperty("行") |
|||
private int row; |
|||
@ApiModelProperty("列") |
|||
private int col; |
|||
@ApiModelProperty("跨行") |
|||
private int rowspan; |
|||
@ApiModelProperty("跨列") |
|||
private int colspan; |
|||
} |
|||
} |
@ -0,0 +1,20 @@ |
|||
package com.ccsens.common.persist.dao; |
|||
|
|||
import com.ccsens.common.persist.mapper.ProMemberMapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.springframework.stereotype.Repository; |
|||
|
|||
/** |
|||
* @author AUSU |
|||
*/ |
|||
@Repository |
|||
public interface ProMemberDao extends ProMemberMapper { |
|||
|
|||
/** |
|||
* 查找用户的成员id |
|||
* @param projectId 项目id |
|||
* @param userId 用户id |
|||
* @return 用户的成员id |
|||
*/ |
|||
Long findUserOfMemberId(@Param("projectId") Long projectId,@Param("userId") Long userId); |
|||
} |
@ -0,0 +1,19 @@ |
|||
package com.ccsens.common.persist.dao; |
|||
|
|||
import com.ccsens.common.bean.vo.ProjectVo; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.springframework.stereotype.Repository; |
|||
|
|||
/** |
|||
* @author AUSU |
|||
*/ |
|||
@Repository |
|||
public interface ProProjectDao { |
|||
|
|||
/** |
|||
* 根据id查找项目信息 |
|||
* @param projectId 项目id(任务详情id) |
|||
* @return 项目详情 |
|||
*/ |
|||
ProjectVo.ProjectInfo findProjectById(@Param("projectId") Long projectId); |
|||
} |
@ -1,9 +1,20 @@ |
|||
package com.ccsens.common.persist.dao; |
|||
|
|||
|
|||
import com.ccsens.common.persist.mapper.ProRoleMapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.springframework.stereotype.Repository; |
|||
|
|||
/** |
|||
* @author AUSU |
|||
*/ |
|||
@Repository |
|||
public interface ProRoleDao extends ProRoleMapper { |
|||
/** |
|||
* 根据角色id查找项目id |
|||
* @param roleId 角色id |
|||
* @return 项目id |
|||
*/ |
|||
Long findRoleOfProjectId(@Param("roleId") Long roleId); |
|||
|
|||
} |
|||
|
@ -0,0 +1,21 @@ |
|||
package com.ccsens.common.persist.dao; |
|||
|
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.springframework.stereotype.Repository; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author AUSU |
|||
*/ |
|||
@Repository |
|||
public interface ProRoleMemberDao { |
|||
|
|||
/** |
|||
* 查找成员所属的所有角色 |
|||
* @param memberId 成员id |
|||
* @return 所有所属角色id |
|||
*/ |
|||
List<Long> findMemberOfRoleIds(@Param("memberId") Long memberId); |
|||
|
|||
} |
@ -0,0 +1,21 @@ |
|||
package com.ccsens.common.persist.dao; |
|||
|
|||
import com.ccsens.common.persist.mapper.ProRoleRepulsionMapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.springframework.stereotype.Repository; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author AUSU |
|||
*/ |
|||
@Repository |
|||
public interface ProRoleRepulsionDao extends ProRoleRepulsionMapper { |
|||
|
|||
/** |
|||
* 查看该角色排斥的所有角色 |
|||
* @param roleId 角色id |
|||
* @return 排斥的角色id |
|||
*/ |
|||
List<Long> findRepulsionByRoleId(@Param("roleId") Long roleId); |
|||
} |
@ -0,0 +1,29 @@ |
|||
package com.ccsens.common.persist.dao; |
|||
|
|||
import com.ccsens.common.bean.vo.TaskVo; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.springframework.stereotype.Repository; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author AUSU |
|||
*/ |
|||
@Repository |
|||
public interface ProTaskDetailDao { |
|||
/** |
|||
* 根据角色查找永久日常任务 |
|||
* @param roleId 角色id |
|||
* @return 永久日常任务列表 |
|||
*/ |
|||
List<TaskVo.QueryTask> queryPermanentGlobalTask(@Param("roleId") Long roleId); |
|||
|
|||
/** |
|||
* 根据角色和时间节点查找日常任务 |
|||
* @param roleId 角色id |
|||
* @param timeNode 时间节点 |
|||
* @param timeUnit 时间颗粒度 |
|||
* @return 日常任务列表 |
|||
*/ |
|||
List<TaskVo.QueryTask> queryGlobalTask(@Param("roleId") Long roleId,@Param("timeNode") Long timeNode,@Param("timeUnit") int timeUnit); |
|||
} |
@ -0,0 +1,21 @@ |
|||
package com.ccsens.common.persist.dao; |
|||
|
|||
import com.ccsens.common.bean.vo.TaskVo; |
|||
import com.ccsens.common.persist.mapper.ProTaskPluginMapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.springframework.stereotype.Repository; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author AUSU |
|||
*/ |
|||
@Repository |
|||
public interface ProTaskPluginDao extends ProTaskPluginMapper { |
|||
/** |
|||
* 根据任务id查询已配置的插件 |
|||
* @param detailTaskId 任务详情id |
|||
* @return 插件列表 |
|||
*/ |
|||
List<TaskVo.TaskPluginInfo> queryTaskOfPlugin(@Param("detailTaskId") Long detailTaskId); |
|||
} |
@ -0,0 +1,19 @@ |
|||
package com.ccsens.common.service; |
|||
|
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Propagation; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
/** |
|||
* 可复用方法 |
|||
* @author AUSU |
|||
*/ |
|||
|
|||
@Slf4j |
|||
@Service |
|||
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) |
|||
public class CommonService { |
|||
|
|||
|
|||
} |
@ -0,0 +1,17 @@ |
|||
package com.ccsens.common.service; |
|||
|
|||
import com.ccsens.common.bean.dto.ProjectDto; |
|||
import com.ccsens.common.bean.vo.ProjectVo; |
|||
|
|||
/** |
|||
* @author ma |
|||
*/ |
|||
public interface IProjectService { |
|||
/** |
|||
* 根据id查询项目信息 |
|||
* @param param 项目id |
|||
* @param userId 当前用户id |
|||
* @return 返回项目信息 |
|||
*/ |
|||
ProjectVo.ProjectInfo findProjectById(ProjectDto.ProjectById param, Long userId); |
|||
} |
@ -0,0 +1,27 @@ |
|||
package com.ccsens.common.service; |
|||
|
|||
import com.ccsens.common.bean.dto.TaskDto; |
|||
import com.ccsens.common.bean.vo.TaskVo; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author ma |
|||
*/ |
|||
public interface ITaskService { |
|||
/** |
|||
* 根据角色查找永久的日常任务 |
|||
* @param param 角色id |
|||
* @param userId 用户id |
|||
* @return 永久日常任务列表 |
|||
*/ |
|||
List<TaskVo.QueryTask> queryPermanentGlobalTask(TaskDto.QueryPermanentGlobalTask param, Long userId); |
|||
|
|||
/** |
|||
* 根据时间和角色查找日常任务 |
|||
* @param param 角色id,时间基准点,时间颗粒度 |
|||
* @param userId 用户id |
|||
* @return 日常任务列表 |
|||
*/ |
|||
List<TaskVo.QueryTask> queryGlobalTask(TaskDto.QueryGlobalTask param, Long userId); |
|||
} |
@ -0,0 +1,36 @@ |
|||
package com.ccsens.common.service; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.ccsens.common.bean.dto.ProjectDto; |
|||
import com.ccsens.common.bean.po.ProTaskDetail; |
|||
import com.ccsens.common.bean.vo.ProjectVo; |
|||
import com.ccsens.common.persist.dao.ProProjectDao; |
|||
import com.ccsens.common.persist.mapper.ProTaskDetailMapper; |
|||
import com.ccsens.util.exception.BaseException; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Propagation; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import javax.annotation.Resource; |
|||
|
|||
/** |
|||
* @author ma |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) |
|||
public class ProjectService implements IProjectService{ |
|||
|
|||
@Resource |
|||
private ProProjectDao projectDao; |
|||
|
|||
@Override |
|||
public ProjectVo.ProjectInfo findProjectById(ProjectDto.ProjectById param, Long userId) { |
|||
ProjectVo.ProjectInfo projectById = projectDao.findProjectById(param.getProjectId()); |
|||
if (ObjectUtil.isNull(projectById)){ |
|||
throw new BaseException("项目不存在,请检查后再试"); |
|||
} |
|||
return projectById; |
|||
} |
|||
} |
@ -0,0 +1,138 @@ |
|||
package com.ccsens.common.service; |
|||
|
|||
import cn.hutool.core.collection.CollectionUtil; |
|||
import cn.hutool.core.util.BooleanUtil; |
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.ccsens.common.bean.dto.TaskDto; |
|||
import com.ccsens.common.bean.vo.TaskVo; |
|||
import com.ccsens.common.persist.dao.*; |
|||
import com.ccsens.util.exception.BaseException; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Propagation; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author ma |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) |
|||
public class TaskService implements ITaskService{ |
|||
|
|||
@Resource |
|||
private ProRoleRepulsionDao roleRepulsionDao; |
|||
@Resource |
|||
private ProRoleDao roleDao; |
|||
@Resource |
|||
private ProRoleMemberDao roleMemberDao; |
|||
@Resource |
|||
private ProMemberDao memberDao; |
|||
@Resource |
|||
private ProTaskDetailDao taskDetailDao; |
|||
@Resource |
|||
private ProTaskPluginDao taskPluginDao; |
|||
|
|||
/** |
|||
* 判断当前用户的角色是否被设置不可见(是否有权限查看任务) |
|||
* @param roleId 查看的角色id |
|||
* @param userId 用户id |
|||
* @return 是否可见(true可见,false不可见) |
|||
*/ |
|||
public Boolean queryRoleIsLook(Long roleId,Long userId){ |
|||
byte visitor = 0; |
|||
Long projectId = roleDao.findRoleOfProjectId(roleId); |
|||
if (ObjectUtil.isNull(projectId)){ |
|||
throw new BaseException("角色信息错误!"); |
|||
} |
|||
Long memberId = memberDao.findUserOfMemberId(projectId,userId); |
|||
//不是项目成员则为游客
|
|||
if (ObjectUtil.isNull(memberId)){ |
|||
visitor = 1; |
|||
} |
|||
//查看角色互斥表是否有对所属角色不可见
|
|||
List<Long> repulsionRoleIds = roleRepulsionDao.findRepulsionByRoleId(roleId); |
|||
//如果为游客
|
|||
if (1 == visitor) { |
|||
return !CollectionUtil.isNotEmpty(repulsionRoleIds); |
|||
} |
|||
//查找成员所属的所有角色
|
|||
List<Long> roleIds = roleMemberDao.findMemberOfRoleIds(memberId); |
|||
if (CollectionUtil.isEmpty(roleIds)){ |
|||
if (CollectionUtil.isNotEmpty(repulsionRoleIds)){ |
|||
return false; |
|||
} |
|||
} |
|||
//排斥角色包含所有所属角色则不可见
|
|||
if (CollectionUtil.isNotEmpty(repulsionRoleIds) && CollectionUtil.isNotEmpty(roleIds)){ |
|||
boolean isLook = repulsionRoleIds.containsAll(roleIds); |
|||
return !isLook; |
|||
} |
|||
return true; |
|||
} |
|||
|
|||
/** |
|||
* 查询任务的插件相关信息 |
|||
* @param taskList 任务列表 |
|||
*/ |
|||
public void queryPluginForTask(List<TaskVo.QueryTask> taskList){ |
|||
if (CollectionUtil.isNotEmpty(taskList)){ |
|||
List<List<TaskVo.TaskPluginInfo>> plugins = new ArrayList<>(); |
|||
for (TaskVo.QueryTask queryTask : taskList) { |
|||
if (ObjectUtil.isNotNull(queryTask.getPanel())){ |
|||
int panelRow = queryTask.getPanel().getRow(); |
|||
int panelCol = queryTask.getPanel().getCol(); |
|||
for (int i = 0; i < panelRow; i++) { |
|||
List<TaskVo.TaskPluginInfo> pluginInfoList = new ArrayList<>(); |
|||
for (int j = 0; j < panelCol; j++) { |
|||
pluginInfoList.add(null); |
|||
} |
|||
plugins.add(pluginInfoList); |
|||
} |
|||
List<TaskVo.TaskPluginInfo> 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); |
|||
} |
|||
}else { |
|||
List<TaskVo.TaskPluginInfo> taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getDetailId()); |
|||
plugins.add(taskPluginInfoList); |
|||
} |
|||
queryTask.setPlugins(plugins); |
|||
} |
|||
} |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public List<TaskVo.QueryTask> queryPermanentGlobalTask(TaskDto.QueryPermanentGlobalTask param, Long userId) { |
|||
//查找角色权限
|
|||
Boolean isLook = queryRoleIsLook(param.getRoleId(),userId); |
|||
if (BooleanUtil.isFalse(isLook)){ |
|||
throw new BaseException("没有查看权限!"); |
|||
} |
|||
List<TaskVo.QueryTask> permanentGlobalTask = taskDetailDao.queryPermanentGlobalTask(param.getRoleId()); |
|||
//查找项目面板和插件信息
|
|||
queryPluginForTask(permanentGlobalTask); |
|||
|
|||
return permanentGlobalTask; |
|||
} |
|||
|
|||
@Override |
|||
public List<TaskVo.QueryTask> queryGlobalTask(TaskDto.QueryGlobalTask param, Long userId) { |
|||
//查找角色权限
|
|||
Boolean isLook = queryRoleIsLook(param.getRoleId(),userId); |
|||
if (BooleanUtil.isFalse(isLook)){ |
|||
throw new BaseException("没有查看权限!"); |
|||
} |
|||
List<TaskVo.QueryTask> globalTask = taskDetailDao.queryGlobalTask(param.getRoleId(),param.getTimeNode(),param.getTimeUnit()); |
|||
queryPluginForTask(globalTask); |
|||
return globalTask; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,16 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProMemberDao"> |
|||
|
|||
<select id="findUserOfMemberId" resultType="java.lang.Long"> |
|||
SELECT |
|||
id |
|||
FROM |
|||
t_pro_member |
|||
WHERE |
|||
rec_status = 0 |
|||
AND project_id = #{projectId} |
|||
AND user_id = #{userId} |
|||
</select> |
|||
|
|||
</mapper> |
@ -0,0 +1,28 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProProjectDao"> |
|||
|
|||
<select id="findProjectById" resultType="com.ccsens.common.bean.vo.ProjectVo$ProjectInfo"> |
|||
SELECT |
|||
d.id, |
|||
d.`name`, |
|||
d.description, |
|||
d.cycle, |
|||
s.plan_start_time, |
|||
s.plan_duration, |
|||
s.plan_end_time, |
|||
s.real_start_time, |
|||
s.real_duration, |
|||
s.real_end_time |
|||
FROM |
|||
t_pro_task_detail AS d |
|||
LEFT JOIN t_pro_task_sub AS s ON d.id = s.task_detail_id |
|||
WHERE |
|||
d.rec_status = 0 |
|||
AND s.rec_status = 0 |
|||
AND d.id = #{projectId} |
|||
ORDER BY |
|||
s.plan_start_time DESC |
|||
LIMIT 1 |
|||
</select> |
|||
</mapper> |
@ -0,0 +1,14 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProRoleMemberDao"> |
|||
|
|||
<select id="findMemberOfRoleIds" resultType="java.lang.Long"> |
|||
SELECT |
|||
role_id |
|||
FROM |
|||
t_pro_role_member |
|||
WHERE |
|||
rec_status = 0 |
|||
AND member_id = #{memberId} |
|||
</select> |
|||
</mapper> |
@ -0,0 +1,15 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProRoleRepulsionDao"> |
|||
|
|||
<select id="findRepulsionByRoleId" resultType="java.lang.Long"> |
|||
SELECT |
|||
repulsion_role_id |
|||
FROM |
|||
t_pro_role_repulsion |
|||
WHERE |
|||
rec_status = 0 |
|||
AND role_id = #{roleId} |
|||
</select> |
|||
|
|||
</mapper> |
@ -0,0 +1,133 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProTaskDetailDao"> |
|||
|
|||
<resultMap id="queryTask" type="com.ccsens.common.bean.vo.TaskVo$QueryTask"> |
|||
<id column="id" property="id"/> |
|||
<result column="detailId" property="detailId"/> |
|||
<result column="name" property="name"/> |
|||
<result column="description" property="description"/> |
|||
<result column="planStart" property="planStart"/> |
|||
<result column="plan_duration" property="planDuration"/> |
|||
<result column="real_start_time" property="realStart"/> |
|||
<result column="real_duration" property="realDuration"/> |
|||
<result column="process" property="process"/> |
|||
<result column="skip" property="skip"/> |
|||
<result column="skipTaskId" property="skipTaskId"/> |
|||
<collection property="panel" ofType="com.ccsens.common.bean.vo.TaskVo$PanelInfo"> |
|||
<result column="backgroundColor" property="backgroundColor"/> |
|||
<result column="borderRadius" property="borderRadius"/> |
|||
<result column="border" property="border"/> |
|||
<result column="shadow" property="shadow"/> |
|||
<result column="width" property="width"/> |
|||
<result column="height" property="height"/> |
|||
<result column="row" property="row"/> |
|||
<result column="col" property="col"/> |
|||
</collection> |
|||
</resultMap> |
|||
|
|||
<select id="queryPermanentGlobalTask" resultMap="queryTask"> |
|||
SELECT |
|||
ts.id, |
|||
td.id AS detailId, |
|||
td.`name`, |
|||
td.description, |
|||
ts.plan_start_time AS planStart, |
|||
ts.plan_duration, |
|||
ts.real_start_time AS realStart, |
|||
ts.real_duration, |
|||
ts.task_status AS process, |
|||
tf.flow_type AS skip, |
|||
tf.jump_task_detail_id AS skipTaskId, |
|||
tpi.back_color AS backgroundColor, |
|||
tpi.round_corner AS borderRadius, |
|||
tpi.border AS border, |
|||
tpi.shadow AS shadow, |
|||
tpi.width AS width, |
|||
tpi.height AS height, |
|||
tpi.`row` AS `row`, |
|||
tpi.col AS col |
|||
FROM |
|||
t_pro_task_detail AS td |
|||
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id |
|||
LEFT JOIN t_pro_task_flow AS tf ON tf.task_detail_id = td.id AND tf.rec_status = 0 |
|||
LEFT JOIN t_pro_role_task AS rt ON rt.task_id = td.id |
|||
LEFT JOIN t_pro_task_panel_info AS tpi ON tpi.task_detail_id = td.id AND tpi.rec_status = 0 |
|||
LEFT JOIN t_label_business AS lb ON td.id = lb.business_id |
|||
LEFT JOIN t_label AS l ON l.id = lb.label_id |
|||
LEFT JOIN t_label_type AS lt ON lt.id = l.label_type_id |
|||
WHERE |
|||
td.rec_status = 0 AND ts.rec_status = 0 AND lb.rec_status = 0 AND l.rec_status = 0 AND lt.rec_status = 0 AND rt.rec_status = 0 |
|||
AND lb.business_type = 0 |
|||
AND l.`level` = 2 |
|||
AND lt.label_type = 1 |
|||
AND ts.plan_start_time = 0 |
|||
AND ts.plan_duration = 0 |
|||
AND rt.role_id = #{roleId} |
|||
</select> |
|||
|
|||
<select id="queryGlobalTask" resultType="com.ccsens.common.bean.vo.TaskVo$QueryTask"> |
|||
SELECT |
|||
alltask.* |
|||
FROM |
|||
( |
|||
SELECT |
|||
ts.id, |
|||
td.id AS detailId, |
|||
td.`name`, |
|||
td.description, |
|||
ts.plan_start_time AS planStart, |
|||
ts.plan_duration, |
|||
ts.real_start_time AS realStart, |
|||
ts.real_duration, |
|||
ts.task_status AS process, |
|||
tf.flow_type AS skip, |
|||
tf.jump_task_detail_id AS skipTaskId, |
|||
tpi.back_color AS backgroundColor, |
|||
tpi.round_corner AS borderRadius, |
|||
tpi.border AS border, |
|||
tpi.shadow AS shadow, |
|||
tpi.width AS width, |
|||
tpi.height AS height, |
|||
tpi.`row` AS `row`, |
|||
tpi.col AS col |
|||
FROM |
|||
t_pro_task_detail AS td |
|||
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id |
|||
LEFT JOIN t_pro_task_flow AS tf ON tf.task_detail_id = td.id |
|||
AND tf.rec_status = 0 |
|||
LEFT JOIN t_pro_role_task AS rt ON rt.task_id = td.id |
|||
LEFT JOIN t_pro_task_panel_info AS tpi ON tpi.task_detail_id = td.id |
|||
AND tpi.rec_status = 0 |
|||
LEFT JOIN t_label_business AS lb ON td.id = lb.business_id |
|||
LEFT JOIN t_label AS l ON l.id = lb.label_id |
|||
LEFT JOIN t_label_type AS lt ON lt.id = l.label_type_id |
|||
WHERE |
|||
td.rec_status = 0 |
|||
AND ts.rec_status = 0 |
|||
AND lb.rec_status = 0 |
|||
AND l.rec_status = 0 |
|||
AND lt.rec_status = 0 |
|||
AND rt.rec_status = 0 |
|||
AND lb.business_type = 0 |
|||
AND l.`level` = 2 |
|||
AND lt.label_type = 1 |
|||
AND ts.plan_start_time != 0 |
|||
AND ts.plan_duration != 0 |
|||
AND rt.role_id = #{roleId} |
|||
AND ts.plan_start_time <= #{timeNode} |
|||
AND ts.plan_end_time >= #{timeNode} |
|||
) AS alltask |
|||
LEFT JOIN t_label_business AS llbb ON alltask.detailId = llbb.business_id |
|||
LEFT JOIN t_label AS ll ON llbb.label_id = ll.id |
|||
LEFT JOIN t_label_type AS lltt ON ll.label_type_id = lltt.id |
|||
WHERE |
|||
llbb.rec_status = 0 |
|||
AND ll.rec_status = 0 |
|||
AND lltt.rec_status = 0 |
|||
AND lltt.label_type = 0 |
|||
AND llbb.business_type = 0 |
|||
AND ll.`level` >= #{timeUnit} |
|||
</select> |
|||
|
|||
</mapper> |
@ -0,0 +1,20 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.ccsens.common.persist.dao.ProTaskPluginDao"> |
|||
|
|||
<select id="queryTaskOfPlugin" resultType="com.ccsens.common.bean.vo.TaskVo$TaskPluginInfo"> |
|||
SELECT |
|||
tp.plugin_id AS pluginId, |
|||
tp.param As param, |
|||
tp.plgin_row AS `row`, |
|||
tp.plgin_col AS col, |
|||
tp.colspan AS colspan, |
|||
tp.rowspan AS rowspan |
|||
FROM |
|||
t_pro_task_plugin AS tp |
|||
LEFT JOIN t_pro_task_detail AS td ON td.id = tp.task_detail_id |
|||
WHERE td.rec_status = 0 AND tp.rec_status = 0 |
|||
AND tp.task_detail_id = #{detailTaskId} |
|||
</select> |
|||
|
|||
</mapper> |
Loading…
Reference in new issue