话不多说,直接上代码!
构造条件代码
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);
可以自己封装一个工具类
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)