From 50c7cb4dba13c118510fad730823aafd66906749 Mon Sep 17 00:00:00 2001 From: miaowenbo <1670593359@qq.com> Date: Wed, 26 Nov 2025 11:13:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E8=AF=BE=E7=A8=8B=E5=AD=A6?= =?UTF-8?q?=E4=B9=A0=E8=AE=B0=E5=BD=95=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E3=80=81=E7=8A=B6=E6=80=81=E3=80=81=E6=97=B6=E9=97=B4=E7=AD=89?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=AD=97=E6=AE=B5=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xboe/school/study/api/StudyCourseApi.java | 11 ++++--- .../service/impl/StudyCourseServiceImpl.java | 30 +++++++++++++++++++ 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java index 576b3fab..ba3ced2a 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java @@ -306,15 +306,16 @@ public class StudyCourseApi extends ApiBaseController{ * 数据维度:(单门课程、多个学生) * 25.11.20新增 * - * @param courseId 课程id + * @param sc 课程学习记录查询参数 */ @RequestMapping(value="/export",method = {RequestMethod.GET,RequestMethod.POST}) - public void export(String courseId, HttpServletResponse response) { + public void export(StudyCourse sc, HttpServletResponse response) { // 入参校验 - if (StringUtils.isBlank(courseId)) { + if (StringUtils.isBlank(sc.getCourseId())) { log.error("【导出课程学习记录】课程id不能为空"); return; } + String courseId = sc.getCourseId(); // 定义输出流 OutputStream outputStream = null; try { @@ -378,9 +379,7 @@ public class StudyCourseApi extends ApiBaseController{ } } // 3.查询课程学习记录信息并拼接导出信息 - StudyCourse studyCourse = new StudyCourse(); - studyCourse.setCourseId(courseId); - List studyCourses = service.findList(studyCourse, null, null); + List studyCourses = service.findList(sc, null, null); // 通过studyCourses中的人员id集合(去重),调用用户中心接口获取人员信息,填充部门字段 List userIds = studyCourses.stream().map(StudyCourse::getAid).filter(Objects::nonNull).collect(Collectors.toList()); if (!userIds.isEmpty()) { diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyCourseServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyCourseServiceImpl.java index cbb05726..b4e68749 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyCourseServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyCourseServiceImpl.java @@ -806,6 +806,36 @@ public class StudyCourseServiceImpl implements IStudyCourseService{ if (StringUtils.isNotBlank(sc.getAid())) { query.addFilter(FieldFilters.eq("aid", sc.getAid())); } + // 25.11.25新增:添加基于时间的查询条件 + if (sc.getQueryStartTime() != null && sc.getQueryFinishTime() != null) { + // 开始结束时间均传入的情况,实现筛选逻辑 + // (startTime >= 查询开始时间 AND startTime <= 查询结束时间) OR (finishTime >= 查询开始时间 AND finishTime <= 查询结束时间) + // 这样兼容查询结束时间为空值的情况,因为学员课程未结束时没有结束时间 + LocalDate startDate = LocalDate.parse(sc.getQueryStartTime()); + LocalDateTime startDateTime = startDate.atStartOfDay(); + LocalDate finishDate = LocalDate.parse(sc.getQueryFinishTime()); + LocalDateTime finishDateTime = finishDate.atTime(LocalTime.MAX); + // 筛选开始时间 + IFieldFilter startTimeInRange = FieldFilters.and(FieldFilters.ge("startTime", startDateTime), FieldFilters.le("startTime", finishDateTime)); + // 筛选结束时间 + IFieldFilter finishTimeInRange = FieldFilters.and(FieldFilters.ge("finishTime", startDateTime), FieldFilters.le("finishTime", finishDateTime)); + // OR条件查询 + query.addFilter(FieldFilters.or(startTimeInRange, finishTimeInRange)); + } else { + // 只输出单个参数情况 + // 筛选开始时间 + if (sc.getQueryStartTime() != null) { + LocalDate startDate = LocalDate.parse(sc.getQueryStartTime()); + LocalDateTime startDateTime = startDate.atStartOfDay(); + query.addFilter(FieldFilters.ge("startTime", startDateTime)); + } + // 筛选结束时间 + if (sc.getQueryFinishTime() != null) { + LocalDate finishDate = LocalDate.parse(sc.getQueryFinishTime()); + LocalDateTime finishDateTime = finishDate.atTime(LocalTime.MAX); + query.addFilter(FieldFilters.le("finishTime", finishDateTime)); + } + } } if (isFinish != null) { if (isFinish) {