44 changed files with 1952 additions and 18 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,62 @@ |
|||||
|
package com.ccsens.common.api; |
||||
|
|
||||
|
import com.ccsens.cloudutil.annotation.MustLogin; |
||||
|
import com.ccsens.common.bean.dto.RoleDto; |
||||
|
import com.ccsens.common.bean.vo.RoleVo; |
||||
|
import com.ccsens.common.service.IProRoleService; |
||||
|
import com.ccsens.util.JsonResponse; |
||||
|
import com.ccsens.util.WebConstant; |
||||
|
import com.ccsens.util.bean.dto.QueryDto; |
||||
|
import io.jsonwebtoken.Claims; |
||||
|
import io.swagger.annotations.Api; |
||||
|
import io.swagger.annotations.ApiImplicitParams; |
||||
|
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 javax.servlet.http.HttpServletRequest; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Api(tags = "角色操作相关api" ) |
||||
|
@RestController |
||||
|
@RequestMapping("/roles") |
||||
|
@Slf4j |
||||
|
public class RoleController { |
||||
|
|
||||
|
@Resource |
||||
|
private IProRoleService proRoleService; |
||||
|
|
||||
|
//@MustLogin
|
||||
|
@ApiOperation(value = "查询角色栏展示的角色",notes = "") |
||||
|
@ApiImplicitParams({ |
||||
|
}) |
||||
|
@RequestMapping(value = "/QueryRoleShow", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
||||
|
public JsonResponse<RoleVo.QueryRole> queryByProjectVirtualRole( |
||||
|
@ApiParam @Validated @RequestBody QueryDto<RoleDto.QueryRole> params) throws Exception { |
||||
|
log.info("查询角色栏展示的角色:{}",params); |
||||
|
params.setUserId(1373938255183089664L); |
||||
|
RoleVo.QueryRole list = proRoleService.QueryShowRole(params.getParam(),params.getUserId()); |
||||
|
log.info("查询角色栏展示的角色成功"); |
||||
|
return JsonResponse.newInstance().ok(list); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@MustLogin |
||||
|
@ApiOperation(value = "配置角色栏展示的角色",notes = "") |
||||
|
@ApiImplicitParams({ |
||||
|
}) |
||||
|
@RequestMapping(value = "/UpdateRoleShow", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
||||
|
public JsonResponse updateShowRole( |
||||
|
@ApiParam @Validated @RequestBody QueryDto<RoleDto.UpdateRoleShow> params) throws Exception { |
||||
|
log.info("配置角色栏展示的角色:{}",params); |
||||
|
proRoleService.updateShowRole(params.getParam(),params.getUserId()); |
||||
|
log.info("配置角色栏展示的角色成功"); |
||||
|
return JsonResponse.newInstance().ok(); |
||||
|
} |
||||
|
} |
||||
@ -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,22 @@ |
|||||
|
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 PluginDto { |
||||
|
|
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("根据插件id查询插件信息入参") |
||||
|
public static class QueryPlugins{ |
||||
|
@NotNull(message = "项目id不能为空") |
||||
|
@ApiModelProperty("插件id") |
||||
|
private Long pluginId; |
||||
|
@ApiModelProperty("插件样式(样式类型 (1一行 2两行 3半屏))") |
||||
|
private byte styleType; |
||||
|
} |
||||
|
} |
||||
@ -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,29 @@ |
|||||
|
package com.ccsens.common.bean.dto; |
||||
|
|
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import javax.validation.constraints.NotNull; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
public class RoleDto { |
||||
|
@Data |
||||
|
@ApiModel("查看角色栏展示") |
||||
|
public static class QueryRole{ |
||||
|
@NotNull(message = "项目id不能为空") |
||||
|
@ApiModelProperty("项目id") |
||||
|
private Long projectId; |
||||
|
} |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("查看永久日常任务") |
||||
|
public static class UpdateRoleShow{ |
||||
|
@NotNull(message = "项目id不能为空") |
||||
|
@ApiModelProperty("项目id") |
||||
|
private Long projectId; |
||||
|
@ApiModelProperty("角色id") |
||||
|
private List<Long> roleIds; |
||||
|
} |
||||
|
} |
||||
@ -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,31 @@ |
|||||
|
package com.ccsens.common.bean.vo; |
||||
|
|
||||
|
import com.fasterxml.jackson.annotation.JsonIgnore; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
public class PluginVo { |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("根据插件id查询插件信息结果") |
||||
|
public static class QueryPlugins { |
||||
|
@ApiModelProperty("插件id") |
||||
|
private Long id; |
||||
|
@ApiModelProperty("插件名称") |
||||
|
private String name; |
||||
|
@ApiModelProperty("插件简介") |
||||
|
private String intro; |
||||
|
@ApiModelProperty(" 插件版本") |
||||
|
private String version; |
||||
|
@ApiModelProperty("样式类型 (1一行 2两行 3半屏)") |
||||
|
private byte styleType; |
||||
|
@ApiModelProperty("插件样式内容") |
||||
|
private String html; |
||||
|
@ApiModelProperty(" 插件的js功能") |
||||
|
private String js; |
||||
|
} |
||||
|
} |
||||
@ -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,37 @@ |
|||||
|
package com.ccsens.common.bean.vo; |
||||
|
|
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @author 逗 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class RoleVo { |
||||
|
@Data |
||||
|
@ApiModel("查看定期任务返回值") |
||||
|
public static class QueryRole { |
||||
|
@ApiModelProperty("展示的角色信息") |
||||
|
private List<RoleInfo> visibleList; |
||||
|
@ApiModelProperty("不展示的角色信息") |
||||
|
private List<RoleInfo> invisibleList; |
||||
|
} |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("查看定期任务返回值") |
||||
|
public static class RoleInfo { |
||||
|
@ApiModelProperty("角色id") |
||||
|
private Long id; |
||||
|
@ApiModelProperty("是否是项目经理 0否 1是") |
||||
|
private Long pm; |
||||
|
@ApiModelProperty("是否是自己所属的角色 0否 1是") |
||||
|
private Long mine; |
||||
|
@ApiModelProperty("角色名") |
||||
|
private String name; |
||||
|
@ApiModelProperty("排序") |
||||
|
private Long sequence; |
||||
|
} |
||||
|
} |
||||
@ -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,13 @@ |
|||||
|
package com.ccsens.common.persist.dao; |
||||
|
|
||||
|
import com.ccsens.common.persist.mapper.ProRoleMapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
import org.springframework.stereotype.Repository; |
||||
|
|
||||
|
@Repository |
||||
|
public interface LabelDao extends ProRoleMapper { |
||||
|
|
||||
|
|
||||
|
String queryIsPm(Long labelId); |
||||
|
|
||||
|
} |
||||
@ -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); |
||||
|
} |
||||
@ -0,0 +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,11 @@ |
|||||
|
package com.ccsens.common.service; |
||||
|
|
||||
|
import com.ccsens.common.bean.dto.RoleDto; |
||||
|
import com.ccsens.common.bean.vo.RoleVo; |
||||
|
|
||||
|
public interface IProRoleService { |
||||
|
|
||||
|
RoleVo.QueryRole QueryShowRole(RoleDto.QueryRole param, Long userId); |
||||
|
|
||||
|
void updateShowRole(RoleDto.UpdateRoleShow param, Long userId); |
||||
|
} |
||||
@ -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,331 @@ |
|||||
|
package com.ccsens.common.service; |
||||
|
|
||||
|
import cn.hutool.core.lang.Snowflake; |
||||
|
import cn.hutool.core.util.ObjectUtil; |
||||
|
import cn.hutool.core.util.StrUtil; |
||||
|
import com.ccsens.common.bean.dto.RoleDto; |
||||
|
import com.ccsens.common.bean.po.*; |
||||
|
import com.ccsens.common.bean.vo.RoleVo; |
||||
|
import com.ccsens.common.persist.dao.LabelDao; |
||||
|
import com.ccsens.common.persist.dao.ProRoleDao; |
||||
|
import com.ccsens.common.persist.mapper.*; |
||||
|
import com.ccsens.util.CodeEnum; |
||||
|
import com.ccsens.util.WebConstant; |
||||
|
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; |
||||
|
import java.util.stream.Collectors; |
||||
|
|
||||
|
@Slf4j |
||||
|
@Service |
||||
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) |
||||
|
public class ProRoleService implements IProRoleService { |
||||
|
@Resource |
||||
|
private ProRoleMapper proRoleMapper; |
||||
|
@Resource |
||||
|
private ProRoleDao proRoleDao; |
||||
|
@Resource |
||||
|
private ProMemberMapper proMemberMapper; |
||||
|
@Resource |
||||
|
private ProRoleMemberMapper proRoleMemberMapper; |
||||
|
@Resource |
||||
|
private ProRoleRepulsionMapper proRoleRepulsionMapper; |
||||
|
@Resource |
||||
|
private ProRoleShowMapper proRoleShowMapper; |
||||
|
@Resource |
||||
|
private LabelMapper labelMapper; |
||||
|
@Resource |
||||
|
private LabelDao labelDao; |
||||
|
|
||||
|
@Resource |
||||
|
private Snowflake snowflake; |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
public RoleVo.QueryRole QueryShowRole(RoleDto.QueryRole param, Long userId) { |
||||
|
RoleVo.QueryRole role = new RoleVo.QueryRole(); |
||||
|
//角色显示的角色
|
||||
|
List<RoleVo.RoleInfo> visibleList = new ArrayList<>(); |
||||
|
RoleVo.RoleInfo RoleInfo = new RoleVo.RoleInfo(); |
||||
|
//不显示的角色
|
||||
|
List<RoleVo.RoleInfo> invisibleList = new ArrayList<>(); |
||||
|
//查询当前用户所属的角色的list
|
||||
|
List<Long> roleIds = null; |
||||
|
//对自己不可见的角色的list
|
||||
|
List<Long> roleIds1 = null; |
||||
|
//判断是否是关注者 用户不是项目下的成员 并且 用户是成员但不属于任何角色 就是关注者
|
||||
|
// 判断用户是成员但是不属于任何角色 在成员表下查询到 成员信息
|
||||
|
ProMemberExample proMemberExample = new ProMemberExample(); |
||||
|
proMemberExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(param.getProjectId()); |
||||
|
List<ProMember> proMembers = proMemberMapper.selectByExample(proMemberExample); //默认一个
|
||||
|
//判断用户是不是项目下的成员
|
||||
|
List<ProRole> proRoles = null; |
||||
|
//排序后的
|
||||
|
List<ProRole> proRoles1 = null; |
||||
|
if (ObjectUtil.isNotNull(proMembers)) { |
||||
|
//判断用户是成员是不是有角色 通过成员id来判断
|
||||
|
ProRoleMemberExample proRoleMemberExample = new ProRoleMemberExample(); |
||||
|
proRoleMemberExample.createCriteria().andMemberIdEqualTo(proMembers.get(0).getId()); |
||||
|
List<ProRoleMember> proRoleMembers = proRoleMemberMapper.selectByExample(proRoleMemberExample); |
||||
|
if (ObjectUtil.isNotNull(proRoleMembers)) { |
||||
|
//用户不是关注者 否 不是才是关注者
|
||||
|
//用户有角色 角色是那个 查询当前用户所属的角色
|
||||
|
Long roleId1 = 0L; |
||||
|
//List<Long> roleIds =null; //查询当前用户所属的角色
|
||||
|
for (ProRoleMember proRoleMember : proRoleMembers) { |
||||
|
Long roleId = proRoleMember.getRoleId();//查询当前用户所属的角色 后端 前端
|
||||
|
roleIds.add(roleId); |
||||
|
ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); |
||||
|
proRoleRepulsionExample.createCriteria().andRoleIdEqualTo(roleId); |
||||
|
List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); |
||||
|
for (ProRoleRepulsion proRoleRepulsion : proRoleRepulsions) { |
||||
|
roleId1 = proRoleRepulsion.getRoleId();//对自己不可见的角色
|
||||
|
//判断对自己不可见的角色是不是我的角色
|
||||
|
roleIds1.add(roleId1); //前端
|
||||
|
} |
||||
|
} |
||||
|
//查询项目下的所有角色 去除不可见角色 通过项目id查找角色id
|
||||
|
ProRoleExample proRoleExample = new ProRoleExample(); |
||||
|
proRoleExample.createCriteria().andProjectIdEqualTo(param.getProjectId()); |
||||
|
proRoles = proRoleMapper.selectByExample(proRoleExample); //前端 后端 UI
|
||||
|
//在一个集合里面 去除另外一个集合 1 2 3 1 2
|
||||
|
for (ProRole proRole : proRoles) { |
||||
|
if(roleIds1.size()> 0){ //不可见的角色大于0
|
||||
|
for (int i = 0; i < roleIds1.size(); i++) { |
||||
|
int size = roleIds.size(); //当前用户只有一个角色
|
||||
|
if(size == 1){ |
||||
|
if (proRole.getId().equals(roleIds1.get(i))) { |
||||
|
proRoles.remove(proRole); //去除不可见角色
|
||||
|
} |
||||
|
}else { |
||||
|
//不可见角色没有
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
//进行排序 把项目经理拿出来
|
||||
|
for (int i = 0; i < proRoles.size(); i++) { |
||||
|
String PM = labelDao.queryIsPm(proRoles.get(i).getLabelId()); |
||||
|
if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
||||
|
ProRole proRole = proRoles.get(i); |
||||
|
proRoles1.add(proRole); |
||||
|
proRoles.remove(proRole); //把项目经理角色拿出去
|
||||
|
} |
||||
|
} |
||||
|
//进行排序 把我的角色拿出来
|
||||
|
for (int i = 0; i < proRoles.size(); i++) { |
||||
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
||||
|
for (Long roleId : roleIds) { |
||||
|
Long id = proRoles.get(i).getId(); |
||||
|
if (roleId.equals(id)) { |
||||
|
proRoles1.add(proRoles.get(i)); |
||||
|
proRoles.remove(proRoles.get(i)); //把我的角色拿出去
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
//进行排序 把其他角色拿出来
|
||||
|
for (int i = 0; i < proRoles.size(); i++) { |
||||
|
proRoles1.add(proRoles.get(i)); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} else { //用户是关注者 是 查询所有 未设置对谁不可见信息 的角色 通过角色id去查找 role_id
|
||||
|
ProRoleExample proRoleExample = new ProRoleExample(); |
||||
|
proRoleExample.createCriteria().andProjectIdEqualTo(param.getProjectId()); |
||||
|
proRoles = proRoleMapper.selectByExample(proRoleExample); |
||||
|
if (ObjectUtil.isNotNull(proRoles)) { |
||||
|
for (ProRole proRole : proRoles) { |
||||
|
ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); |
||||
|
proRoleRepulsionExample.createCriteria().andRoleIdEqualTo(proRole.getId()); |
||||
|
List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); |
||||
|
if (ObjectUtil.isNotNull(proRoleRepulsions)) { |
||||
|
//查到就是设置过了 移除
|
||||
|
proRoles.remove(proRole); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//进行排序 把项目经理拿出来
|
||||
|
for (int i = 0; i < proRoles.size(); i++) { |
||||
|
String PM = labelDao.queryIsPm(proRoles.get(i).getLabelId()); |
||||
|
if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
||||
|
ProRole proRole = proRoles.get(i); |
||||
|
proRoles1.add(proRole); |
||||
|
proRoles.remove(proRole); //把项目经理角色拿出去
|
||||
|
} |
||||
|
} |
||||
|
//进行排序 把我的角色拿出来
|
||||
|
for (int i = 0; i < proRoles.size(); i++) { |
||||
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
||||
|
for (Long roleId : roleIds) { |
||||
|
Long id = proRoles.get(i).getId(); |
||||
|
if (roleId.equals(id)) { |
||||
|
proRoles1.add(proRoles.get(i)); |
||||
|
proRoles.remove(proRoles.get(i)); //把我的角色拿出去
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
//进行排序 把其他角色拿出来
|
||||
|
for (int i = 0; i < proRoles.size(); i++) { |
||||
|
proRoles1.add(proRoles.get(i)); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
//根据项目id和userId查询当前用户配置的角色栏信息
|
||||
|
ProRoleShowExample proRoleShowExample = new ProRoleShowExample(); |
||||
|
proRoleShowExample.createCriteria().andProjectIdEqualTo(param.getProjectId()).andUserIdEqualTo(userId); |
||||
|
List<ProRoleShow> proRoleShows = proRoleShowMapper.selectByExample(proRoleShowExample); |
||||
|
//循环所有的角色,判断是否在配置信息内 将角色信息放入“显示角色”的数组内 将角色放入“隐藏角色"数组
|
||||
|
if (ObjectUtil.isNotNull(proRoleShows)) { |
||||
|
for (int i = 0; i < proRoles1.size(); i++) { |
||||
|
ProRoleShowExample proRoleShowExample1 = new ProRoleShowExample(); |
||||
|
proRoleShowExample.createCriteria().andRoleIdEqualTo(proRoles1.get(i).getId()); |
||||
|
List<ProRoleShow> proRoleShows1 = proRoleShowMapper.selectByExample(proRoleShowExample1); |
||||
|
if (ObjectUtil.isNotNull(proRoleShows1)) { |
||||
|
//配置过了 将角色信总放入“显示角色"的数组内
|
||||
|
RoleInfo.setId(proRoles1.get(i).getId()); |
||||
|
RoleInfo.setName(proRoles1.get(i).getName()); |
||||
|
//是否是pm 0否 1 是 //通过标签来定义 5 和 2 34是
|
||||
|
//通过角色表里面的标签id 去 标签表查询 label_type_id =5 在去标签类型表查5 和 level =2
|
||||
|
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
||||
|
if (StrUtil.isNotEmpty(PM)) { //是
|
||||
|
RoleInfo.setPm(1L); |
||||
|
} else { |
||||
|
RoleInfo.setPm(0L); |
||||
|
} |
||||
|
|
||||
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
||||
|
for (Long roleId : roleIds) { |
||||
|
Long id = proRoles1.get(i).getId(); |
||||
|
if (roleId.equals(id)) { |
||||
|
RoleInfo.setMine(1L); |
||||
|
} else { |
||||
|
RoleInfo.setMine(0L); |
||||
|
} |
||||
|
} |
||||
|
//排序
|
||||
|
RoleInfo.setSequence(Long.valueOf(proRoleShows1.get(0).getSequence())); |
||||
|
visibleList.add(RoleInfo); |
||||
|
|
||||
|
} else { |
||||
|
//未配置过了
|
||||
|
RoleInfo.setId(proRoles1.get(i).getId()); |
||||
|
RoleInfo.setName(proRoles1.get(i).getName()); |
||||
|
//是否是pm
|
||||
|
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
||||
|
if (StrUtil.isNotEmpty(PM)) { //是
|
||||
|
RoleInfo.setPm(1L); |
||||
|
} else { |
||||
|
RoleInfo.setPm(0L); |
||||
|
} |
||||
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
||||
|
for (Long roleId : roleIds) { |
||||
|
Long id = proRoles1.get(i).getId(); |
||||
|
if (roleId.equals(id)) { |
||||
|
RoleInfo.setMine(1L); |
||||
|
} else { |
||||
|
RoleInfo.setMine(0L); |
||||
|
} |
||||
|
} |
||||
|
//排序
|
||||
|
RoleInfo.setSequence((long) i); |
||||
|
invisibleList.add(RoleInfo); |
||||
|
} |
||||
|
} |
||||
|
} else { |
||||
|
//循环查询到的角色,放入“显示角色”的数组内 数组长度大于等于5
|
||||
|
for (int i = 0; i < 5; i++) { |
||||
|
RoleInfo.setId(proRoles1.get(i).getId()); |
||||
|
RoleInfo.setName(proRoles1.get(i).getName()); |
||||
|
//是否是pm
|
||||
|
Long index = proRoles1.get(i).getLabelId()+1; |
||||
|
String PM = labelDao.queryIsPm(index); |
||||
|
if (StrUtil.isNotEmpty(PM)) { //是
|
||||
|
RoleInfo.setPm(1L); |
||||
|
} else { |
||||
|
RoleInfo.setPm(0L); |
||||
|
} |
||||
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
||||
|
for (Long roleId : roleIds) { |
||||
|
Long id = proRoles1.get(i).getId(); |
||||
|
if (roleId.equals(id)) { |
||||
|
RoleInfo.setMine(1L); |
||||
|
} else { |
||||
|
RoleInfo.setMine(0L); |
||||
|
} |
||||
|
} |
||||
|
//排序
|
||||
|
RoleInfo.setSequence((long) i); |
||||
|
visibleList.add(RoleInfo); |
||||
|
} |
||||
|
if (proRoles1.size() >= 6) { |
||||
|
//将剩下的角色放入“隐藏角色”数组
|
||||
|
for (int i = 5; i < proRoles1.size(); i++) { |
||||
|
RoleInfo.setId(proRoles1.get(i).getId()); |
||||
|
RoleInfo.setName(proRoles1.get(i).getName()); |
||||
|
//是否是pm
|
||||
|
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
||||
|
if (StrUtil.isNotEmpty(PM)) { //是
|
||||
|
RoleInfo.setPm(1L); |
||||
|
} else { |
||||
|
RoleInfo.setPm(0L); |
||||
|
} |
||||
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
||||
|
for (Long roleId : roleIds) { |
||||
|
Long id = proRoles1.get(i).getId(); |
||||
|
if (roleId.equals(id)) { |
||||
|
RoleInfo.setMine(1L); |
||||
|
} else { |
||||
|
RoleInfo.setMine(0L); |
||||
|
} |
||||
|
} |
||||
|
//排序
|
||||
|
RoleInfo.setSequence((long) (i-5)); //6-5
|
||||
|
invisibleList.add(RoleInfo); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
role.setInvisibleList(invisibleList); |
||||
|
role.setVisibleList(visibleList); |
||||
|
return role; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void updateShowRole(RoleDto.UpdateRoleShow param, Long userId) { |
||||
|
//判断入参内的角色判断入参内的角色id列表是否为空
|
||||
|
if(ObjectUtil.isNull(param.getRoleIds())){ |
||||
|
throw new BaseException(CodeEnum.NOT_ROLE); |
||||
|
} |
||||
|
//根据token获取到userld和项目id在角色展示表中查看是否有原来的数据
|
||||
|
ProRoleShowExample proRoleShowExample = new ProRoleShowExample(); |
||||
|
proRoleShowExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(param.getProjectId()); |
||||
|
List<ProRoleShow> proRoleShows = proRoleShowMapper.selectByExample(proRoleShowExample); |
||||
|
if(ObjectUtil.isNotNull(proRoleShows)){ |
||||
|
for (ProRoleShow proRoleShow : proRoleShows) { |
||||
|
proRoleShow.setRecStatus((byte) 2); |
||||
|
proRoleShowMapper.updateByPrimaryKeySelective(proRoleShow); |
||||
|
} |
||||
|
} |
||||
|
List<Long> roleIds = param.getRoleIds(); //roleid
|
||||
|
//去重重复的
|
||||
|
List roleIdsList=(List) roleIds.stream().distinct().collect(Collectors.toList()); |
||||
|
for (int i = 0; i < roleIdsList.size(); i++) { |
||||
|
ProRoleShow proRoleShow = new ProRoleShow(); |
||||
|
proRoleShow.setId(snowflake.nextId()); |
||||
|
proRoleShow.setUserId(userId); |
||||
|
proRoleShow.setProjectId(param.getProjectId()); |
||||
|
proRoleShow.setRoleId((long)roleIdsList.get(i)); |
||||
|
proRoleShow.setOperator(userId); |
||||
|
proRoleShow.setSequence(i); |
||||
|
proRoleShowMapper.insertSelective(proRoleShow); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -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,19 @@ |
|||||
|
<?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.LabelDao"> |
||||
|
|
||||
|
<select id="queryIsPm" resultType="String"> |
||||
|
select t_label.description |
||||
|
from t_label,t_label_type |
||||
|
where t_label.id=#{labelId} |
||||
|
and t_label.`level` = 2 |
||||
|
and t_label.label_type_id=t_label_type.id |
||||
|
</select> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
</mapper> |
||||
@ -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,26 @@ |
|||||
|
<?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.ProRoleDao"> |
||||
|
|
||||
|
<select id="" parameterType="java.util.Map" |
||||
|
resultType="Long"> |
||||
|
|
||||
|
</select> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
<select id="findRoleOfProjectId" resultType="java.lang.Long"> |
||||
|
SELECT |
||||
|
project_id |
||||
|
FROM |
||||
|
t_pro_role |
||||
|
WHERE |
||||
|
rec_status = 0 |
||||
|
AND id = #{roleId} |
||||
|
</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