diff --git a/pom.xml b/pom.xml index f13aa80..dad2c0c 100755 --- a/pom.xml +++ b/pom.xml @@ -177,6 +177,14 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + 9 + 9 + + 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 29615c9..2bacdfa 100644 --- a/src/main/java/com/jsl/oa/config/startup/PermissionList.java +++ b/src/main/java/com/jsl/oa/config/startup/PermissionList.java @@ -23,22 +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", "增加子模块")); + permissionList.add(new PermissionVO("project:child_add", "增加子系统")); + permissionList.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", "增加子模块")); + 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", "增加子模块")); + permissionDeveloper.add(new PermissionVO("project:child_add", "增加子系统")); + permissionDeveloper.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 2537b38..4940c2c 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -1,9 +1,9 @@ package com.jsl.oa.controllers; import com.jsl.oa.annotations.NeedPermission; +import com.jsl.oa.model.vodata.ProjectChildAddVO; import com.jsl.oa.model.vodata.ProjectEditVO; import com.jsl.oa.model.vodata.ProjectInfoVO; -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; @@ -227,7 +227,7 @@ public class ProjectController { * @return */ @PostMapping("/project/module/add") - @NeedPermission("project:module:add") + @NeedPermission("project:module_add") public BaseResponse projectModuleAdd( @RequestBody @Validated ProjectModuleAddVO projectModuleAddVO, @NotNull BindingResult bindingResult, @@ -248,7 +248,7 @@ public class ProjectController { * @return {@link BaseResponse} */ @PostMapping("/project/child/add") - @NeedPermission("project:child:add") + @NeedPermission("project:child_add") public BaseResponse projectChildAdd( HttpServletRequest request, @RequestBody @Validated ProjectChildAddVO projectChildAddVO, diff --git a/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java index 88d12ba..330cf47 100644 --- a/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java @@ -16,6 +16,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.util.Date; /** @@ -54,10 +55,23 @@ public class ProjectDailyController { @GetMapping("/daily/getMyDaily") - public BaseResponse getMyDaily(HttpServletRequest request) { - return projectDailyService.getMyDaily(request); + public BaseResponse getMyDaily(@RequestParam Integer page, + @RequestParam Integer pageSize, + HttpServletRequest request) { + return projectDailyService.getMyDaily(page, pageSize, request); } + + @GetMapping("/daily/search") + public BaseResponse searchMyDaily(@RequestParam Integer page, + @RequestParam Integer pageSize, + Date beginTime, + Date endTime, + HttpServletRequest request) { + return projectDailyService.searchMyDaily(page, pageSize, beginTime, endTime, request); + } + + } diff --git a/src/main/java/com/jsl/oa/model/dodata/ProjectDailyDO.java b/src/main/java/com/jsl/oa/model/dodata/ProjectDailyDO.java index 4df4917..50cd2a1 100644 --- a/src/main/java/com/jsl/oa/model/dodata/ProjectDailyDO.java +++ b/src/main/java/com/jsl/oa/model/dodata/ProjectDailyDO.java @@ -1,5 +1,6 @@ package com.jsl.oa.model.dodata; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.experimental.Accessors; @@ -35,14 +36,17 @@ public class ProjectDailyDO { /** * 日志发布时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date dailyTime; /** * 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createdAt; /** * 修改时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updatedAt; /** * 是否删除 diff --git a/src/main/java/com/jsl/oa/model/dodata/ReviewDO.java b/src/main/java/com/jsl/oa/model/dodata/ReviewDO.java index 2280e81..cddbfd1 100644 --- a/src/main/java/com/jsl/oa/model/dodata/ReviewDO.java +++ b/src/main/java/com/jsl/oa/model/dodata/ReviewDO.java @@ -27,7 +27,7 @@ public class ReviewDO { //申请理由 private String content; //申请者用户id - private Long senderId; + private Integer senderId; //审核者用户id private Long recipientId; //审核类别(0:子系统;1:子模块) diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java index ab4114e..3b0a891 100644 --- a/src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java @@ -1,21 +1,27 @@ package com.jsl.oa.model.vodata; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.util.Date; @Data public class ProjectDailyAddVO { @NotNull(message = "项目id不能为空") - private Long projectId; + private Integer projectId; @NotBlank(message = "日报内容不能为空") private String content; + @NotNull(message = "工作时间不能为空") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date dailyTime; + } diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectDailyDataVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyDataVO.java new file mode 100644 index 0000000..99a3d56 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyDataVO.java @@ -0,0 +1,24 @@ +package com.jsl.oa.model.vodata; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ProjectDailyDataVO { + + private Integer totalCount; + + private Integer currentPage; + + private Integer pageSize; + + private List list; + +} + + diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java index 9bc827e..d2e1a2e 100644 --- a/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java @@ -1,16 +1,38 @@ package com.jsl.oa.model.vodata; -/* - 张睿相 Java -*/ -/** - * 总体描述 - *

创建时间:2024/4/18 13:50

- * - * @author 张睿相 - * @since v1.0 - */ +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + + +@Data +@Accessors(chain = true) public class ProjectDailyVO { + + private Long id; + + private Long userId; + + private String userName; + + private Long projectId; + + private String projectName; + + private String content; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date dailyTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createdAt; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updatedAt; + + } diff --git a/src/main/java/com/jsl/oa/model/vodata/ReviewAddVO.java b/src/main/java/com/jsl/oa/model/vodata/ReviewAddVO.java index 25114be..333a67a 100644 --- a/src/main/java/com/jsl/oa/model/vodata/ReviewAddVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/ReviewAddVO.java @@ -17,12 +17,12 @@ public class ReviewAddVO { private String content; //申请的项目id @NotNull(message = "项目id不能为空") - private Long projectId; + private Integer projectId; //申请的子系统id @NotNull(message = "子系统id不能为空") - private Long projectChildId; + private Integer projectChildId; //申请的子模块id - private Long projectModuleId; + private Integer projectModuleId; } diff --git a/src/main/java/com/jsl/oa/services/ProjectDailyService.java b/src/main/java/com/jsl/oa/services/ProjectDailyService.java index 3d6fad9..4fd44c6 100644 --- a/src/main/java/com/jsl/oa/services/ProjectDailyService.java +++ b/src/main/java/com/jsl/oa/services/ProjectDailyService.java @@ -6,7 +6,7 @@ import com.jsl.oa.model.vodata.ProjectDailyAddVO; import com.jsl.oa.utils.BaseResponse; import javax.servlet.http.HttpServletRequest; - +import java.util.Date; /** @@ -20,7 +20,13 @@ public interface ProjectDailyService { BaseResponse addDaily(ProjectDailyAddVO projectDailyAddVO, HttpServletRequest request); - BaseResponse getMyDaily(HttpServletRequest request); + BaseResponse getMyDaily(Integer page, Integer pageSize, HttpServletRequest request); + + BaseResponse searchMyDaily(Integer page, + Integer pageSize, + Date beginTime, + Date endTime, + HttpServletRequest request); } diff --git a/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java index 8194080..17374fd 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java @@ -5,9 +5,11 @@ package com.jsl.oa.services.impl; import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.ProjectDailyDAO; -import com.jsl.oa.exception.BusinessException; +import com.jsl.oa.dao.UserDAO; import com.jsl.oa.model.dodata.ProjectDailyDO; import com.jsl.oa.model.vodata.ProjectDailyAddVO; +import com.jsl.oa.model.vodata.ProjectDailyDataVO; +import com.jsl.oa.model.vodata.ProjectDailyVO; import com.jsl.oa.services.ProjectDailyService; import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.ErrorCode; @@ -18,6 +20,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -37,7 +40,7 @@ import java.util.List; public class ProjectDailyServiceImpl implements ProjectDailyService { private final ProjectDAO projectDAO; - + private final UserDAO userDAO; private final ProjectDailyDAO projectDailyDAO; @@ -47,17 +50,17 @@ public class ProjectDailyServiceImpl implements ProjectDailyService { // 获取用户id Long userId = Processing.getAuthHeaderToUserId(request); // 从请求体中获取项目id - Long projectId = projectDailyAddVO.getProjectId(); + Integer projectId = projectDailyAddVO.getProjectId(); // 检查项目是否存在 - if (!projectDAO.isExistProjectById(projectId)) { - throw new BusinessException(ErrorCode.PROJECT_NOT_EXIST); + if (!projectDAO.isExistProjectById(Long.valueOf(projectId))) { + return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST); } // 赋值数据库表实体类相关属性 ProjectDailyDO projectDailyDO = new ProjectDailyDO(); Processing.copyProperties(projectDailyAddVO, projectDailyDO); - projectDailyDO.setUserId(userId) - .setDailyTime(new Date()); + projectDailyDO.setUserId(userId); + // 向数据库添加数据 projectDailyDAO.addProjectDaily(projectDailyDO); @@ -65,19 +68,62 @@ public class ProjectDailyServiceImpl implements ProjectDailyService { return ResultUtil.success(); } + @Override - public BaseResponse getMyDaily(HttpServletRequest request) { + public BaseResponse getMyDaily(Integer page, Integer pageSize, HttpServletRequest request) { // 获取用户id Long userId = Processing.getAuthHeaderToUserId(request); // 获取 我发布的及自己负责的项目下 的日报 List projectDailyDOList = projectDailyDAO.getMyProjectDaily(userId); +// 进行分页 + List dailyPage = Processing.getPage(projectDailyDOList, page, pageSize); +// 封装结果类 + List projectDailyVOS = encapsulateArrayClass(dailyPage); + ProjectDailyDataVO projectDailyDataVO = + new ProjectDailyDataVO(projectDailyDOList.size(), page, pageSize, projectDailyVOS); - return ResultUtil.success(projectDailyDOList); - + return ResultUtil.success(projectDailyDataVO); } + @Override + public BaseResponse searchMyDaily(Integer page, + Integer pageSize, + Date beginTime, + Date endTime, + HttpServletRequest request) { +// 获取用户id + Long userId = Processing.getAuthHeaderToUserId(request); +// 获取 我发布的及自己负责的项目下 的日报 + List projectDailyDOList = + projectDailyDAO.getMyProjectDaily(userId); + + + return null; + } + + + public List encapsulateArrayClass(List + projectDailyDOList) { +// 定义封装结果数组 + List projectDailyVOS = new ArrayList<>(); +// 遍历原始数据,依次封装 + for (ProjectDailyDO projectDailyDO : projectDailyDOList) { +// 定义一个封装结果类 + ProjectDailyVO projectDailyVO = new ProjectDailyVO(); +// 复制相同的属性值 + Processing.copyProperties(projectDailyDO, projectDailyVO); +// 赋值其他需查询的属性 + projectDailyVO.setProjectName( + projectDAO.getProjectById(projectDailyVO.getProjectId()).getName()) + .setUserName(userDAO.getUserById(projectDailyDO.getUserId()).getNickname()); +// 向 结果封装类数组 添加对应 日报封装类 + projectDailyVOS.add(projectDailyVO); + } + + return projectDailyVOS; + } } diff --git a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java index cc6c4d7..c7b6700 100644 --- a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -5,7 +5,6 @@ import com.jsl.oa.common.constant.ReviewConstants; import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.ReviewDAO; import com.jsl.oa.dao.UserDAO; -import com.jsl.oa.exception.BusinessException; import com.jsl.oa.mapper.ProjectMapper; import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.model.dodata.ProjectChildDO; @@ -190,23 +189,23 @@ public class ReviewServiceImpl implements ReviewService { public BaseResponse addReview(ReviewAddVO reviewAddVO, HttpServletRequest request) { //获取用户 - Long userId = Processing.getAuthHeaderToUserId(request); + Integer userId = Math.toIntExact(Processing.getAuthHeaderToUserId(request)); //检查对应项目,子系统,子模块是否存在 - if (!projectDAO.isExistProjectById(reviewAddVO.getProjectId())) { - throw new BusinessException(ErrorCode.PROJECT_NOT_EXIST); + if (!projectDAO.isExistProjectById(Long.valueOf(reviewAddVO.getProjectId()))) { + return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST); } if (projectMapper.getProjectChildById( - Math.toIntExact(reviewAddVO.getProjectChildId())) != null) { - throw new BusinessException(ErrorCode.PROJECT_CHILD_NOT_EXIST); + Math.toIntExact(reviewAddVO.getProjectChildId())) == null) { + return ResultUtil.error(ErrorCode.PROJECT_CHILD_NOT_EXIST); } // 子模块id不为空时查询,否则直接跳过 if (reviewAddVO.getProjectModuleId() != null) { if (projectMapper.getModuleById( - Math.toIntExact(reviewAddVO.getProjectModuleId())) != null) { - throw new BusinessException(ErrorCode.MODULE_NOT_EXIST); + Math.toIntExact(reviewAddVO.getProjectModuleId())) == null) { + return ResultUtil.error(ErrorCode.MODULE_NOT_EXIST); } } @@ -370,7 +369,7 @@ public class ReviewServiceImpl implements ReviewService { Processing.copyProperties(reviewDO, reviewVO); // 赋值其他非空属性 reviewVO.setCategory(Processing.turnReviewCategory(reviewDO.getCategory())) - .setSenderName(userMapper.getUserById(reviewDO.getSenderId()).getNickname()) + .setSenderName(userMapper.getUserById(Long.valueOf(reviewDO.getSenderId())).getNickname()) .setProjectName(projectDAO.getProjectById(reviewDO.getProjectId()).getName()) .setProjectChildName(projectMapper.getProjectChildById( Math.toIntExact(reviewDO.getProjectChildId())).getName()) @@ -466,8 +465,10 @@ public class ReviewServiceImpl implements ReviewService { int total = allReviews.size(); int startIndex = (page - 1) * pageSize; int endIndex = Math.min(startIndex + pageSize, total); - List reviewsOnPage = allReviews.subList(startIndex, endIndex); - + List reviewsOnPage = new ArrayList<>(); + if (startIndex <= allReviews.size()) { + reviewsOnPage = allReviews.subList(startIndex, endIndex); + } reviewDataVO.setReviews(reviewsOnPage); reviewDataVO.setTotalCount(allReviews.size()); reviewDataVO.setPageSize(pageSize); @@ -475,6 +476,8 @@ public class ReviewServiceImpl implements ReviewService { return reviewDataVO; } + + } diff --git a/src/main/java/com/jsl/oa/utils/Processing.java b/src/main/java/com/jsl/oa/utils/Processing.java index 35e2009..62d1fd1 100755 --- a/src/main/java/com/jsl/oa/utils/Processing.java +++ b/src/main/java/com/jsl/oa/utils/Processing.java @@ -394,4 +394,19 @@ public class Processing { } + /** + * @Description: list分页方法 + * @Date: 2024/4/18 + * @Param list: + * @Param pageNumber: 当前页码 + * @Param pageSize: 每页几条 + **/ + public static List getPage(List list, int pageNumber, int pageSize) { + int fromIndex = (pageNumber - 1) * pageSize; + if (fromIndex >= list.size()) { + return new ArrayList<>(); // 返回空列表,表示超出范围 + } + int toIndex = Math.min(fromIndex + pageSize, list.size()); + return list.subList(fromIndex, toIndex); + } } diff --git a/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml b/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml index bc48bd9..5bb6f20 100644 --- a/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml +++ b/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml @@ -31,7 +31,7 @@ and is_delete = 0 -