From 507d7e7d00ea432ad9af872567395e9c7c1db54e Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Thu, 18 Apr 2024 22:39:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=97=A5=E6=8A=A5=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=88=91=E7=9A=84=E6=97=A5=E6=8A=A5=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 分页查询修正 --- pom.xml | 8 +++ .../controllers/ProjectDailyController.java | 6 ++- .../jsl/oa/model/dodata/ProjectDailyDO.java | 4 ++ .../oa/model/vodata/ProjectDailyAddVO.java | 6 +++ .../oa/model/vodata/ProjectDailyDataVO.java | 24 +++++++++ .../jsl/oa/model/vodata/ProjectDailyVO.java | 42 ++++++++++++---- .../jsl/oa/services/ProjectDailyService.java | 2 +- .../impl/ProjectDailyServiceImpl.java | 49 +++++++++++++++---- .../oa/services/impl/ReviewServiceImpl.java | 19 ++++--- .../java/com/jsl/oa/utils/Processing.java | 15 ++++++ .../com/jsl/oa/mapper/ProjectDailyMapper.xml | 2 +- 11 files changed, 146 insertions(+), 31 deletions(-) create mode 100644 src/main/java/com/jsl/oa/model/vodata/ProjectDailyDataVO.java 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/controllers/ProjectDailyController.java b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java index 88d12ba..ef53004 100644 --- a/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java @@ -54,8 +54,10 @@ 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); } } 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/vodata/ProjectDailyAddVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java index ab4114e..e13b2bd 100644 --- a/src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java @@ -1,10 +1,12 @@ 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 @@ -16,6 +18,10 @@ public class ProjectDailyAddVO { @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/services/ProjectDailyService.java b/src/main/java/com/jsl/oa/services/ProjectDailyService.java index 3d6fad9..6bc3900 100644 --- a/src/main/java/com/jsl/oa/services/ProjectDailyService.java +++ b/src/main/java/com/jsl/oa/services/ProjectDailyService.java @@ -20,7 +20,7 @@ public interface ProjectDailyService { BaseResponse addDaily(ProjectDailyAddVO projectDailyAddVO, HttpServletRequest request); - BaseResponse getMyDaily(HttpServletRequest request); + BaseResponse getMyDaily(Integer page, Integer pageSize, 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..03d5b30 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,7 +20,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; -import java.util.Date; +import java.util.ArrayList; import java.util.List; /** @@ -37,7 +39,7 @@ import java.util.List; public class ProjectDailyServiceImpl implements ProjectDailyService { private final ProjectDAO projectDAO; - + private final UserDAO userDAO; private final ProjectDailyDAO projectDailyDAO; @@ -50,14 +52,14 @@ public class ProjectDailyServiceImpl implements ProjectDailyService { Long projectId = projectDailyAddVO.getProjectId(); // 检查项目是否存在 if (!projectDAO.isExistProjectById(projectId)) { - throw new BusinessException(ErrorCode.PROJECT_NOT_EXIST); + 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,20 +67,49 @@ 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); } + + + 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..1c01f68 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; @@ -194,19 +193,19 @@ public class ReviewServiceImpl implements ReviewService { //检查对应项目,子系统,子模块是否存在 if (!projectDAO.isExistProjectById(reviewAddVO.getProjectId())) { - throw new BusinessException(ErrorCode.PROJECT_NOT_EXIST); + 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); } } @@ -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 -