mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-07 09:56:47 +08:00
feat:
1.开始结束时间均传入的情况,实现筛选逻辑(startTime >= 查询开始时间 AND startTime <= 查询结束时间) OR (finishTime >= 查询开始时间 AND finishTime <= 查询结束时间),这样兼容查询结束时间为空值的情况,因为学员课程未结束时没有结束时间 2.和前端沟通组件中有通过组件实现今年以来等筛选逻辑,去掉对应逻辑和枚举类
This commit is contained in:
@@ -1,71 +0,0 @@
|
||||
package com.xboe.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 学习时长时间筛选状态枚举
|
||||
* <p>用于筛选学习时长的时间范围条件</p>
|
||||
*
|
||||
* @author miaowenbo
|
||||
* @since 2025-11-24
|
||||
*/
|
||||
@Getter
|
||||
public enum StudyTimeStatusEnum {
|
||||
|
||||
/**
|
||||
* 所有时间范围
|
||||
*/
|
||||
STATUS_ALL(0, "所有"),
|
||||
|
||||
/**
|
||||
* 今年以来
|
||||
*/
|
||||
STATUS_THIS_YEAR(1, "今年以来"),
|
||||
|
||||
/**
|
||||
* 最近一年
|
||||
*/
|
||||
STATUS_LAST_YEAR(2, "最近一年"),
|
||||
|
||||
/**
|
||||
* 最近三个月
|
||||
*/
|
||||
STATUS_LAST_THREE_MONTHS(3, "最近三个月"),
|
||||
|
||||
/**
|
||||
* 最近一个月
|
||||
*/
|
||||
STATUS_LAST_MONTH(4, "最近一个月"),
|
||||
|
||||
/**
|
||||
* 最近一周
|
||||
*/
|
||||
STATUS_LAST_WEEK(5, "最近一周");
|
||||
|
||||
private final int code;
|
||||
private final String label;
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
*
|
||||
* @param code 状态码
|
||||
* @param label 标签描述
|
||||
*/
|
||||
StudyTimeStatusEnum(int code, String label) {
|
||||
this.code = code;
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据状态码获取对应的枚举值
|
||||
*
|
||||
* @param code 状态码
|
||||
* @return 对应的枚举值,若未找到则返回默认值STATUS_ALL
|
||||
*/
|
||||
public static StudyTimeStatusEnum getByCode(Integer code) {
|
||||
return Arrays.stream(values()).filter(item -> Objects.equals(item.code, code)).findFirst().orElse(STATUS_ALL);
|
||||
}
|
||||
}
|
||||
@@ -176,25 +176,17 @@ public class StudyCourse extends IdEntity{
|
||||
private String bestScore;
|
||||
|
||||
/**
|
||||
* 查询开始学习时间(年月日)
|
||||
*/
|
||||
@Transient
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime queryStartTime;
|
||||
|
||||
/**
|
||||
* 查询完成学习时间(年月日)
|
||||
*/
|
||||
@Transient
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime queryFinishTime;
|
||||
|
||||
/**
|
||||
* 学习时长时间筛选状态(0、空或其他-所有、1-今年以来、2-最近一年、3-最近三个月、4-最近一个月、5-最近一周)
|
||||
* 此字段生效时,查询开始学习时间和查询完成学习时间填写无效
|
||||
* 查询开始学习时间(yyyy-MM-dd)
|
||||
* 25.11.24新增
|
||||
*/
|
||||
@Transient
|
||||
private Integer studyTimeStatus;
|
||||
private String queryStartTime;
|
||||
|
||||
/**
|
||||
* 查询完成学习时间(yyyy-MM-dd)
|
||||
* 25.11.24新增
|
||||
*/
|
||||
@Transient
|
||||
private String queryFinishTime;
|
||||
|
||||
}
|
||||
|
||||
@@ -2,10 +2,7 @@ package com.xboe.school.study.service.impl;
|
||||
|
||||
import com.xboe.common.OrderCondition;
|
||||
import com.xboe.common.PageList;
|
||||
import com.xboe.core.orm.FieldFilters;
|
||||
import com.xboe.core.orm.FieldUpdateType;
|
||||
import com.xboe.core.orm.QueryBuilder;
|
||||
import com.xboe.core.orm.UpdateBuilder;
|
||||
import com.xboe.core.orm.*;
|
||||
import com.xboe.core.utils.ConvertUtil;
|
||||
import com.xboe.data.outside.IOutSideDataService;
|
||||
import com.xboe.module.course.dao.CourseContentDao;
|
||||
@@ -34,6 +31,7 @@ import org.springframework.stereotype.Service;
|
||||
import javax.transaction.Transactional;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -147,7 +145,38 @@ 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) {
|
||||
query.addFilter(FieldFilters.eq("status", 9));
|
||||
@@ -155,8 +184,8 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
|
||||
query.addFilter(FieldFilters.lt("status", 9));
|
||||
}
|
||||
}
|
||||
// 25.11.24新增:添加工号和部门字段,并增加学习时长枚举筛选
|
||||
PageList<StudyCourse> studyCoursePageList = studyCourseDao.findPage(query.builder());
|
||||
// 25.11.24新增:添加工号和部门字段,并增加学习时长枚举筛选
|
||||
// 根据当前查询数据的aid,补全用户工号和部门字段
|
||||
List<StudyCourse> studyCourses = studyCoursePageList.getList();
|
||||
List<String> userIds = studyCourses.stream().map(StudyCourse::getAid).collect(Collectors.toList());
|
||||
@@ -199,7 +228,7 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
|
||||
}
|
||||
}
|
||||
}
|
||||
return studyCourseDao.findPage(query.builder());
|
||||
return studyCoursePageList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user