From 04f179881107f9b75d38e683b65ada62deb6c3d3 Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Fri, 19 Apr 2024 15:07:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=97=A5=E6=8A=A5=E6=A8=A1=E5=9D=97=20?= =?UTF-8?q?=E6=97=A5=E6=8A=A5=E6=90=9C=E7=B4=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加日报搜索接口 --- .../controllers/ProjectDailyController.java | 16 +++++-- .../java/com/jsl/oa/dao/ProjectDailyDAO.java | 47 +++++++++++++++++-- .../com/jsl/oa/mapper/ProjectDailyMapper.java | 4 ++ .../jsl/oa/services/ProjectDailyService.java | 3 +- .../impl/ProjectDailyServiceImpl.java | 31 ++++++++++-- .../java/com/jsl/oa/utils/Processing.java | 29 ++++++++++-- .../com/jsl/oa/mapper/ProjectDailyMapper.xml | 15 ++++++ 7 files changed, 127 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java index 330cf47..550e1f1 100644 --- a/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java @@ -16,7 +16,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; -import java.util.Date; + /** @@ -65,10 +65,18 @@ public class ProjectDailyController { @GetMapping("/daily/search") public BaseResponse searchMyDaily(@RequestParam Integer page, @RequestParam Integer pageSize, - Date beginTime, - Date endTime, + Integer projectId, + String beginTime, + String endTime, HttpServletRequest request) { - return projectDailyService.searchMyDaily(page, pageSize, beginTime, endTime, request); + + + return projectDailyService.searchMyDaily(projectId, + page, + pageSize, + Processing.convertStringToDate(beginTime), + Processing.convertStringToDate(endTime), + request); } diff --git a/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java index ad6805d..40bee4e 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java @@ -12,6 +12,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; import java.util.List; import java.util.function.Function; import java.util.stream.Collectors; @@ -58,6 +60,42 @@ public class ProjectDailyDAO { List myProjectDaily = projectDailyMapper.getProjectDailyByUser(userId); projectDailyDOList.addAll(myProjectDaily); +// 排序并去重 + projectDailyDOList = sortaAndNotRepeatDailyDO(projectDailyDOList); + + return projectDailyDOList; + } + + + public List getMyProjectDailyByTime(Long userId, Date beginTime, Date endTime) { + +// 日报数据数组 + List projectDailyDOList = new ArrayList<>(); + +// 先获取我负责的项目下的日报数据 + //获取我负责的项目 + List projectDOS = projectMapper.getAllProjectByUserId(userId); + //获取项目下对应日报,并根据时间筛选 + for (ProjectDO projectDO:projectDOS) { + List dailyFromProject = projectDailyMapper.getProjectDailyByProjectAndTime(projectDO.getId(), + beginTime, endTime); + projectDailyDOList.addAll(dailyFromProject); + } + +// 在获取本人的发布日报,并根据时间筛选 + List myProjectDaily = projectDailyMapper. + getProjectDailyByUserAndTime(userId, beginTime, endTime); + projectDailyDOList.addAll(myProjectDaily); + +// 排序并去重 + projectDailyDOList = sortaAndNotRepeatDailyDO(projectDailyDOList); + + return projectDailyDOList; + } + + + public List sortaAndNotRepeatDailyDO(List projectDailyDOList) { + // 去除重复的日报信息 projectDailyDOList = projectDailyDOList.stream() // 根据 id 属性进行去重 @@ -66,12 +104,13 @@ public class ProjectDailyDAO { .values().stream() .collect(Collectors.toList()); +// 根据时间进行排序 + projectDailyDOList = projectDailyDOList.stream() + .sorted(Comparator.comparing(ProjectDailyDO::getCreatedAt).reversed()) + .collect(Collectors.toList()); + return projectDailyDOList; } - - - - } diff --git a/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java index 3425a7e..e4076de 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java @@ -4,6 +4,7 @@ package com.jsl.oa.mapper; import com.jsl.oa.model.dodata.ProjectDailyDO; import org.apache.ibatis.annotations.Mapper; +import java.util.Date; import java.util.List; @@ -23,6 +24,9 @@ public interface ProjectDailyMapper { List getProjectDailyByProject(Long pid); + List getProjectDailyByProjectAndTime(Long id, Date beginTime, Date endTime); + + List getProjectDailyByUserAndTime(Long userId, Date beginTime, Date endTime); } diff --git a/src/main/java/com/jsl/oa/services/ProjectDailyService.java b/src/main/java/com/jsl/oa/services/ProjectDailyService.java index 4fd44c6..4e7f0b7 100644 --- a/src/main/java/com/jsl/oa/services/ProjectDailyService.java +++ b/src/main/java/com/jsl/oa/services/ProjectDailyService.java @@ -22,7 +22,8 @@ public interface ProjectDailyService { BaseResponse getMyDaily(Integer page, Integer pageSize, HttpServletRequest request); - BaseResponse searchMyDaily(Integer page, + BaseResponse searchMyDaily(Integer projectId, + Integer page, Integer pageSize, Date beginTime, Date endTime, 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 17374fd..c62e0b3 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java @@ -88,19 +88,40 @@ public class ProjectDailyServiceImpl implements ProjectDailyService { } @Override - public BaseResponse searchMyDaily(Integer page, + public BaseResponse searchMyDaily(Integer projectId, + Integer page, Integer pageSize, Date beginTime, Date endTime, HttpServletRequest request) { // 获取用户id Long userId = Processing.getAuthHeaderToUserId(request); -// 获取 我发布的及自己负责的项目下 的日报 - List projectDailyDOList = - projectDailyDAO.getMyProjectDaily(userId); +// 根据时间筛选---获取 我发布的及自己负责的项目下 的日报 + List projectDailyDOList = new ArrayList<>(); + //如果时间不为空,则先根据时间筛选 + if (beginTime != null && endTime != null) { + projectDailyDOList = projectDailyDAO. + getMyProjectDailyByTime(userId, beginTime, endTime); + } else { + //否则获取全部数据 + projectDailyDOList = + projectDailyDAO.getMyProjectDaily(userId); + } - return null; +// 再根据项目id进行筛选 + if (projectId != null) { + projectDailyDOList.removeIf(projectDailyDO -> projectDailyDO.getProjectId() != Long.valueOf(projectId)); + } + +// 进行分页 + List dailyPage = Processing.getPage(projectDailyDOList, page, pageSize); +// 封装结果类 + List projectDailyVOS = encapsulateArrayClass(dailyPage); + ProjectDailyDataVO projectDailyDataVO = + new ProjectDailyDataVO(projectDailyDOList.size(), page, pageSize, projectDailyVOS); + + return ResultUtil.success(projectDailyDataVO); } diff --git a/src/main/java/com/jsl/oa/utils/Processing.java b/src/main/java/com/jsl/oa/utils/Processing.java index 62d1fd1..ab1cdcd 100755 --- a/src/main/java/com/jsl/oa/utils/Processing.java +++ b/src/main/java/com/jsl/oa/utils/Processing.java @@ -23,10 +23,9 @@ import org.springframework.validation.ObjectError; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Random; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; /** *

自定义快捷工具类

@@ -409,4 +408,26 @@ public class Processing { int toIndex = Math.min(fromIndex + pageSize, list.size()); return list.subList(fromIndex, toIndex); } + + + /** + * @Description: 字符与时间类型转换方法 + * @Date: 2024/4/19 + * @Param dateString: + **/ + public static Date convertStringToDate(String dateString) { + if (dateString.isEmpty()) { + return null; // 如果字符串为空,返回空的Date对象 + } else { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + return dateFormat.parse(dateString); + } catch (ParseException e) { + return null; + } + } + } + + + } diff --git a/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml b/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml index 5bb6f20..7514619 100644 --- a/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml +++ b/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml @@ -37,5 +37,20 @@ and is_delete = 0 + + + \ No newline at end of file