话不多说,直接上代码!
构造条件代码
privateLambdaQueryWrapper buildQueryWrapper(NewBigDatabaseDTO dto){ Integer timeType = dto.getTimeType(); Date currentDate = new Date(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(T::getHasDelete, 0); lqw.eq(T::getHasStatus, 0); lqw.ge(timeType == NewBigDataTimeTypeEnum.ONE_WEEK.getCode(), T::getAddTime, DateUtil.offsetWeek(currentDate, -1)); lqw.ge(timeType == NewBigDataTimeTypeEnum.ONE_MONTH.getCode(), T::getAddTime, DateUtil.offsetMonth(currentDate, -1)); lqw.ge(timeType == NewBigDataTimeTypeEnum.THREE_MONTH.getCode(), T::getAddTime, DateUtil.offsetMonth(currentDate, -3)); lqw.ge(timeType == NewBigDataTimeTypeEnum.ONE_YEAR.getCode(), T::getAddTime, DateUtil.offsetMonth(currentDate, -12)); lqw.ge(timeType == NewBigDataTimeTypeEnum.CUSTOMIZE.getCode(), T::getAddTime, dto.getStartTime()); lqw.le(timeType == NewBigDataTimeTypeEnum.CUSTOMIZE.getCode(), T::getAddTime, dto.getEndTime()); return lqw; }
其中使用到了Hutool的DateUtil工具
不想用可以使用Java中的Calendar类,文末放了使用参考。
NewBigDatabaseDTO
@Data
public class NewBigDatabaseDTO {
@NotNull(message = "时间区间类别timeType不能为空")
@VerifyEnum(enumClass = NewBigDataTimeTypeEnum.class, keyColumn = "code")
private Integer timeType;
@OtherAffect(column = "timeType", columnValue = "6", message = "timeType=6时, startTime必填")
private Date startTime;
@OtherAffect(column = "timeType", columnValue = "6", message = "timeType=6时, endTime必填")
private Date endTime;
NewBigDataTimeTypeEnum枚举
public enum NewBigDataTimeTypeEnum {
ONE_WEEK(1, "近一周"),
ONE_MONTH(2, "近一个月"),
THREE_MONTH(3, "近三个月"),
ONE_YEAR(4, "近一年"),
ALL(5, "所有"),
CUSTOMIZE(6, "自定义")
;
private final int code;
private final String name;
NewBigDataTimeTypeEnum(int code, String info) {
this.code = code;
this.name = info;
}
public static String getValue(int code) {
NewBigDataTimeTypeEnum[] enums = values();
for (NewBigDataTimeTypeEnum item : enums) {
if (item.code == code) {
return item.getName();
}
}
return null;
}
public int getCode() {
return code;
}
public String getName() {
return name;
}
}
Calendar使用参考
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c = Calendar.getInstance();
//过去七天
c.setTime(new Date());
c.add(Calendar.DATE, - 7);
Date d = c.getTime();
String day = format.format(d);
System.out.println("过去七天:"+day);
//过去一月
c.setTime(new Date());
c.add(Calendar.MONTH, -1);
Date m = c.getTime();
String mon = format.format(m);
System.out.println("过去一个月:"+mon);
//过去三个月
c.setTime(new Date());
c.add(Calendar.MONTH, -3);
Date m3 = c.getTime();
String mon3 = format.format(m3);
System.out.println("过去三个月:"+mon3);
//过去一年
c.setTime(new Date());
c.add(Calendar.YEAR, -1);
Date y = c.getTime();
String year = format.format(y);
System.out.println("过去一年:"+year);
可以自己封装一个工具类



