diff --git a/src/main/java/com/jsl/oa/config/startup/PermissionList.java b/src/main/java/com/jsl/oa/config/startup/PermissionList.java index 2ae0d8f..29615c9 100644 --- a/src/main/java/com/jsl/oa/config/startup/PermissionList.java +++ b/src/main/java/com/jsl/oa/config/startup/PermissionList.java @@ -23,16 +23,22 @@ public class PermissionList { permissionList.add(new PermissionVO("info:get_header_image", "获取头部图片")); permissionList.add(new PermissionVO("info:edit_header_image", "编辑头部图片")); permissionList.add(new PermissionVO("info:delete_header_image", "删除头部图片")); + permissionPrincipal.add(new PermissionVO("project:child:add", "增加子系统")); + permissionPrincipal.add(new PermissionVO("project:module:add", "增加子模块")); permissionPrincipal.add(new PermissionVO("auth:change_password", "修改密码")); permissionPrincipal.add(new PermissionVO("info:get_header_image", "获取头部图片")); permissionPrincipal.add(new PermissionVO("info:edit_header_image", "编辑头部图片")); permissionPrincipal.add(new PermissionVO("info:delete_header_image", "删除头部图片")); permissionPrincipal.add(new PermissionVO("project:add", "增加项目")); + permissionPrincipal.add(new PermissionVO("project:child:add", "增加子系统")); + permissionPrincipal.add(new PermissionVO("project:module:add", "增加子模块")); permissionDeveloper.add(new PermissionVO("auth:change_password", "修改密码")); permissionDeveloper.add(new PermissionVO("info:get_header_image", "获取头部图片")); permissionDeveloper.add(new PermissionVO("info:edit_header_image", "编辑头部图片")); permissionDeveloper.add(new PermissionVO("info:delete_header_image", "删除头部图片")); + permissionPrincipal.add(new PermissionVO("project:child:add", "增加子系统")); + permissionPrincipal.add(new PermissionVO("project:module:add", "增加子模块")); } } diff --git a/src/main/java/com/jsl/oa/controllers/ProjectController.java b/src/main/java/com/jsl/oa/controllers/ProjectController.java index a7beabf..2537b38 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -3,7 +3,8 @@ package com.jsl.oa.controllers; import com.jsl.oa.annotations.NeedPermission; import com.jsl.oa.model.vodata.ProjectEditVO; import com.jsl.oa.model.vodata.ProjectInfoVO; -import com.jsl.oa.model.vodata.ProjectWorkVO; +import com.jsl.oa.model.vodata.ProjectChildAddVO; +import com.jsl.oa.model.vodata.ProjectModuleAddVO; import com.jsl.oa.model.vodata.business.info.ProjectShowVO; import com.jsl.oa.services.ProjectService; import com.jsl.oa.utils.BaseResponse; @@ -209,7 +210,7 @@ public class ProjectController { * @return */ @GetMapping("/project/participate/get") -public BaseResponse projectParticipateGet( + public BaseResponse projectParticipateGet( @RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "10") Integer pageSize, HttpServletRequest request) { @@ -217,25 +218,47 @@ public BaseResponse projectParticipateGet( } + /** + * 增加子模块 + * + * @param projectModuleAddVO + * @param bindingResult + * @param request + * @return + */ + @PostMapping("/project/module/add") + @NeedPermission("project:module:add") + public BaseResponse projectModuleAdd( + @RequestBody @Validated ProjectModuleAddVO projectModuleAddVO, + @NotNull BindingResult bindingResult, + HttpServletRequest request + ) { + // 判断是否有参数错误 + if (bindingResult.hasErrors()) { + return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult)); + } + return projectService.projectModuleAdd(request, projectModuleAddVO); + } /** - * 子系统子模块的增加 + * 子系统的增加 * * @param request 请求 * @param bindingResult 参数校验 * @return {@link BaseResponse} */ - @PostMapping("/project/work/add") - public BaseResponse projectWorkAdd( + @PostMapping("/project/child/add") + @NeedPermission("project:child:add") + public BaseResponse projectChildAdd( HttpServletRequest request, - @RequestBody @Validated ProjectWorkVO projectWorkVO, + @RequestBody @Validated ProjectChildAddVO projectChildAddVO, @NotNull BindingResult bindingResult ) { // 判断是否有参数错误 if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult)); } - return projectService.projectWorkAdd(request, projectWorkVO); + return projectService.projectChildAdd(request, projectChildAddVO); } @@ -262,6 +285,9 @@ public BaseResponse projectParticipateGet( return projectService.projectAdd(request, projectInfoVO); } + + + /** * 获取负责人id * @@ -323,7 +349,13 @@ public BaseResponse projectParticipateGet( return projectService.projectModuleDelete(request, id); } - + /** + * 项目名模糊查询项目 + * + * @param name + * @param request + * @return + */ @GetMapping("/project/get/name") public BaseResponse projectGetName( @RequestParam String name, @@ -332,4 +364,28 @@ public BaseResponse projectParticipateGet( return projectService.projectGetName(name, request); } + /** + * 项目名查询子系统 + * + * @param name + * @param request + * @return + */ + @GetMapping("/project/child/get/name") + public BaseResponse projectChildGetName( + @RequestParam String name, + HttpServletRequest request + ) { + return projectService.projectChildGetName(name, request); + } + + @GetMapping("/project/module/get/name") + public BaseResponse projectModuleGetName( + @RequestParam String projectName, + @RequestParam String childName, + HttpServletRequest request + ) { + return projectService.projectModuleGetName(projectName, childName, request); + } + } diff --git a/src/main/java/com/jsl/oa/dao/ProjectDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDAO.java index 80a6007..32a597a 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -7,7 +7,7 @@ import com.jsl.oa.model.dodata.ProjectModuleDO; import com.jsl.oa.model.dodata.info.ProjectShowDO; import com.jsl.oa.model.vodata.ProjectEditVO; import com.jsl.oa.model.vodata.ProjectInfoVO; -import com.jsl.oa.model.vodata.ProjectWorkVO; +import com.jsl.oa.model.vodata.ProjectChildAddVO; import com.jsl.oa.utils.Processing; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -35,10 +35,10 @@ public class ProjectDAO { projectMapper.projectAdd(projectAdd); } - public void projectWorkAdd(ProjectWorkVO projectWorkVO) { + public void projectWorkAdd(ProjectChildAddVO projectChildAddVO) { log.info("\t> 执行 DAO 层 ProjectDAO.projectWorkAdd 方法"); log.info("\t\t> 从 MySQL 获取数据"); - projectMapper.projectWorkAdd(projectWorkVO); + projectMapper.projectWorkAdd(projectChildAddVO); } public ProjectDO projectEdit(@NotNull ProjectEditVO projectEdit, Long projectId) { diff --git a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java index dcaad1f..510a65b 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java @@ -3,8 +3,9 @@ import com.jsl.oa.model.dodata.ProjectChildDO; import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.ProjectModuleDO; import com.jsl.oa.model.vodata.ProjectInfoVO; +import com.jsl.oa.model.vodata.ProjectModuleAddVO; import com.jsl.oa.model.vodata.ProjectWorkSimpleVO; -import com.jsl.oa.model.vodata.ProjectWorkVO; +import com.jsl.oa.model.vodata.ProjectChildAddVO; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @@ -23,11 +24,17 @@ public interface ProjectMapper { + ",#{completeTime},#{deadLine},#{status},#{tags},#{workLoad})") void projectAdd(ProjectInfoVO projectAdd); - @Insert("insert into organize_oa.oa_project_work (project_id, pid, name, principal_id," - + " work_load, description, cycle, complete_time, type, is_finish,status) " - + "value (#{projectId},#{pid},#{name},#{principalId},#{workLoad}," - + "#{description},#{cycle},#{completeTime},#{type},#{isFinish},#{status})") - void projectWorkAdd(ProjectWorkVO projectWorkVO); + @Insert("insert into organize_oa.oa_project_child (project_id,name, principal_id," + + " work_load, description, cycle,status,dead_line) " + + "value (#{projectId},#{name},#{principalId},#{workLoad}," + + "#{description},#{cycle},#{status},#{deadLine})") + void projectWorkAdd(ProjectChildAddVO projectChildAddVO); + + @Insert("insert into organize_oa.oa_project_modules (project_child_id, name, principal_id," + + " work_load, description, status, dead_line) " + + "value (#{projectChildId},#{name},#{principalId},#{workLoad}," + + "#{description},#{status},#{deadLine})") + void projectModuleAdd(ProjectModuleAddVO projectModuleAddVO); void projectEdit(ProjectDO projectEdit); @@ -150,4 +157,14 @@ public interface ProjectMapper { @Select("select * from organize_oa.oa_project where name like CONCAT('%',#{name},'%')") List getByLikeName(String name); + + + @Select("select * from organize_oa.oa_project_child where project_id = " + + "(select id from organize_oa.oa_project where name =#{name})") + List getChildByLikeName(String name); + + @Select("select * from organize_oa.oa_project_modules where project_child_id = " + + "(select id from organize_oa.oa_project_child where name =#{childName} " + + "and project_id = (select id from organize_oa.oa_project where name =#{projectName}))") + List getModuleByName(String projectName, String childName); } diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectWorkVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectChildAddVO.java similarity index 61% rename from src/main/java/com/jsl/oa/model/vodata/ProjectWorkVO.java rename to src/main/java/com/jsl/oa/model/vodata/ProjectChildAddVO.java index 80630b9..7ede1ea 100644 --- a/src/main/java/com/jsl/oa/model/vodata/ProjectWorkVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectChildAddVO.java @@ -6,24 +6,21 @@ import javax.validation.constraints.NotNull; import java.sql.Timestamp; @Data -public class ProjectWorkVO { +public class ProjectChildAddVO { - private Long pid; @NotNull(message = "项目id不能为空") private Long projectId; private Long principalId; @NotNull(message = "周期不能为空") private Integer cycle; + @NotNull(message = "工作量不能为空") private Integer workLoad; - @NotNull(message = "类型不能为空") - private Integer type; @NotNull(message = "名字不能为空") private String name; private String description; - private Integer isDelete; - private Integer isFinish; - private Integer status; - private Timestamp beginTime; - private Timestamp completeTime; + private String status; + @NotNull(message = "截止时间不能为空") + private Timestamp deadLine; + } diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectModuleAddVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectModuleAddVO.java new file mode 100644 index 0000000..23bd4e2 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectModuleAddVO.java @@ -0,0 +1,25 @@ +package com.jsl.oa.model.vodata; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.sql.Timestamp; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ProjectModuleAddVO { + @NotNull(message = "子系统id不能为空") + private Long projectChildId; + private Long principalId; + @NotNull(message = "工作量不能为空") + private Integer workLoad; + @NotNull(message = "名字不能为空") + private String name; + private String description; + private String status; + @NotNull(message = "截止时间不能为空") + private Timestamp deadLine; +} diff --git a/src/main/java/com/jsl/oa/model/vodata/ReturnGetVO.java b/src/main/java/com/jsl/oa/model/vodata/ReturnGetVO.java index 8fb1afc..c198806 100644 --- a/src/main/java/com/jsl/oa/model/vodata/ReturnGetVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/ReturnGetVO.java @@ -1,17 +1,16 @@ package com.jsl.oa.model.vodata; -import com.fasterxml.jackson.annotation.JsonInclude; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; + @Data @NoArgsConstructor @AllArgsConstructor -@Accessors(chain = true) -@JsonInclude(JsonInclude.Include.NON_NULL) + /** * 模糊查询返回,系统/项目/模块 名字和id diff --git a/src/main/java/com/jsl/oa/services/ProjectService.java b/src/main/java/com/jsl/oa/services/ProjectService.java index 2e71184..851edeb 100644 --- a/src/main/java/com/jsl/oa/services/ProjectService.java +++ b/src/main/java/com/jsl/oa/services/ProjectService.java @@ -2,7 +2,8 @@ package com.jsl.oa.services; import com.jsl.oa.model.vodata.ProjectEditVO; import com.jsl.oa.model.vodata.ProjectInfoVO; -import com.jsl.oa.model.vodata.ProjectWorkVO; +import com.jsl.oa.model.vodata.ProjectChildAddVO; +import com.jsl.oa.model.vodata.ProjectModuleAddVO; import com.jsl.oa.model.vodata.business.info.ProjectShowVO; import com.jsl.oa.utils.BaseResponse; @@ -35,7 +36,7 @@ public interface ProjectService { Integer page, Integer pageSize); - BaseResponse projectWorkAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO); + BaseResponse projectChildAdd(HttpServletRequest request, ProjectChildAddVO projectChildAddVO); BaseResponse tGet(List tags, List isFinish, Integer page, Integer pageSize); @@ -69,4 +70,10 @@ public interface ProjectService { BaseResponse projectModuleDelete(HttpServletRequest request, List id); BaseResponse projectGetName(String name, HttpServletRequest request); + + BaseResponse projectModuleAdd(HttpServletRequest request, ProjectModuleAddVO projectModuleAddVO); + + BaseResponse projectChildGetName(String name, HttpServletRequest request); + + BaseResponse projectModuleGetName(String projectName, String childName, HttpServletRequest request); } diff --git a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java index e436f37..7fb8615 100644 --- a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java @@ -70,6 +70,7 @@ public class MessageServiceImpl implements MessageService { } PageHelper.startPage(page, pageSize); List messageDOList = messageMapper.page(beginTime, endTime, uid); + //封装返回数据 List messageGetVOList = new ArrayList<>(); for (MessageDO messageDO : messageDOList) { @@ -89,9 +90,9 @@ public class MessageServiceImpl implements MessageService { } messageGetVOList.add(messageGetVO1); } - //分页返回 PageInfo pageInfo = new PageInfo<>(messageGetVOList); + pageInfo.setTotal(messageMapper.page(beginTime, endTime, uid).size()); return ResultUtil.success(pageInfo); } diff --git a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java index df0bf35..00abac7 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -12,6 +12,7 @@ import com.jsl.oa.dao.RoleDAO; import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.ProjectMapper; import com.jsl.oa.mapper.UserMapper; +import com.jsl.oa.model.dodata.ProjectChildDO; import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.ProjectModuleDO; import com.jsl.oa.model.dodata.UserDO; @@ -88,26 +89,19 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public BaseResponse projectWorkAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO) { - //获取用户id - Long userId = Processing.getAuthHeaderToUserId(request); - //是否是增加子系统 - if (projectWorkVO.getType() == 0) { - //是否是老师 - if (Processing.checkUserIsPrincipal(request, roleDAO)) { - projectDAO.projectWorkAdd(projectWorkVO); - } else { - return ResultUtil.error(ErrorCode.NOT_PERMISSION); - } - } else { - //是否是子系统的负责人 - if (Objects.equals(userId, projectMapper.getPirIdbyId(projectWorkVO.getPid()))) { - projectDAO.projectWorkAdd(projectWorkVO); - } else { - return ResultUtil.error(ErrorCode.NOT_PERMISSION); - } - } + public BaseResponse projectChildAdd(HttpServletRequest request, ProjectChildAddVO projectChildAddVO) { + //是否是项目负责人 + if (projectMapper.getProjectById(projectChildAddVO.getProjectId()).getPrincipalId() + .equals(Processing.getAuthHeaderToUserId(request)) + ) { + HashMap descriptionMap = new HashMap<>(); + descriptionMap.put("description", projectChildAddVO.getDescription()); + projectChildAddVO.setDescription(gson.toJson(descriptionMap)); + projectDAO.projectWorkAdd(projectChildAddVO); + } else { + return ResultUtil.error(ErrorCode.NOT_PERMISSION); + } return ResultUtil.success("添加成功"); } @@ -183,6 +177,7 @@ public class ProjectServiceImpl implements ProjectService { } //分页返回 PageInfo pageInfo = new PageInfo<>(projectSimpleVOList); + pageInfo.setTotal(projectDAO.get(userId, null, null).size()); return ResultUtil.success(pageInfo); } @@ -202,6 +197,7 @@ public class ProjectServiceImpl implements ProjectService { } //分页返回 PageInfo pageInfo = new PageInfo<>(projectSimpleVOList); + pageInfo.setTotal(projectMapper.getParticipateProject(userId).size()); return ResultUtil.success(pageInfo); } @@ -251,6 +247,49 @@ public class ProjectServiceImpl implements ProjectService { return ResultUtil.success(returnGetVOList); } + @Override + public BaseResponse projectModuleAdd(HttpServletRequest request, ProjectModuleAddVO projectModuleAddVO) { + //判断是否是子系统负责人或项目负责人 + if (!Objects.equals(Processing.getAuthHeaderToUserId(request), + projectMapper.getProjectChildById(projectModuleAddVO.getProjectChildId().intValue()).getPrincipalId()) + // 项目负责人 + && !Objects.equals(Processing.getAuthHeaderToUserId(request), + projectMapper.getPirIdbyId(projectModuleAddVO.getProjectChildId()))) { + return ResultUtil.error(ErrorCode.NOT_PERMISSION); + } else { + HashMap descriptionMap = new HashMap<>(); + descriptionMap.put("description", projectModuleAddVO.getDescription()); + projectModuleAddVO.setDescription(gson.toJson(descriptionMap)); + projectMapper.projectModuleAdd(projectModuleAddVO); + } + return ResultUtil.success("添加成功"); + } + + @Override + public BaseResponse projectChildGetName(String name, HttpServletRequest request) { + + List projectChildDOList = projectMapper.getChildByLikeName(name); + List returnGetVOList = new ArrayList<>(); + for (ProjectChildDO projectChildDO : projectChildDOList) { + ReturnGetVO returnGetVO = new ReturnGetVO(); + Processing.copyProperties(projectChildDO, returnGetVO); + returnGetVOList.add(returnGetVO); + } + return ResultUtil.success(returnGetVOList); + } + + @Override + public BaseResponse projectModuleGetName(String projectName, String childName, HttpServletRequest request) { + List projectModuleDOList = projectMapper.getModuleByName(projectName, childName); + List returnGetVOList = new ArrayList<>(); + for (ProjectModuleDO projectModuleDO : projectModuleDOList) { + ReturnGetVO returnGetVO = new ReturnGetVO(); + Processing.copyProperties(projectModuleDO, returnGetVO); + returnGetVOList.add(returnGetVO); + } + return ResultUtil.success(returnGetVOList); + } + @Override public BaseResponse getModuleById(Integer id) { ProjectModuleDO projectWorkSimpleVO = projectMapper.getModuleById(id); @@ -426,6 +465,7 @@ public class ProjectServiceImpl implements ProjectService { } //分页返回 PageInfo pageInfo = new PageInfo<>(projectSimpleVOList); + pageInfo.setTotal(projectDAO.workget(userId, tags, isFinish, is).size()); return ResultUtil.success(pageInfo); }