栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ENUM枚举类实战应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ENUM枚举类实战应用

应用场景

前端页面查询条件为一个起止日期

前端传到后台直接为 今日 本周 本月 本年等汉字,后端需要查询必须把这些汉字转化为日期范围。
这种第一想到的是if(本周)
{}else if(本年)
{}
等,这样写很难维护代码,下面用枚举类来实现
下面用代码来实现。

枚举类
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;


import java.time.ZoneId;
import java.util.Date;

public enum DateEnum implements DateRange {

    JR("今日"){

        public DateRangeQuery getTimeRange(String dataStr) {

            DateRangeQuery dateRangeQuery = new DateRangeQuery();
            Date date = DateUtil.date();
            Date beginOfDay = DateUtil.beginOfDay(date);

            dateRangeQuery.setTimeGe(beginOfDay.toInstant()
                    .atZone(ZoneId.systemDefault())
                    .toLocalDateTime());
            //一天的结束,
            Date endOfDay = DateUtil.endOfDay(date);
            dateRangeQuery.setTimeLe(endOfDay.toInstant()
                    .atZone(ZoneId.systemDefault())
                    .toLocalDateTime());
            return dateRangeQuery;
        }
    },
    BZ("本周"){

        public DateRangeQuery getTimeRange(String dataStr) {

            DateRangeQuery dateRangeQuery = new DateRangeQuery();
            Date date = DateUtil.date();
            Date beginOfDay = DateUtil.beginOfWeek(date);

            dateRangeQuery.setTimeGe(beginOfDay.toInstant()
                    .atZone(ZoneId.systemDefault())
                    .toLocalDateTime());

            Date endOfDay = DateUtil.endOfWeek(date);
            dateRangeQuery.setTimeLe(endOfDay.toInstant()
                    .atZone(ZoneId.systemDefault())
                    .toLocalDateTime());
            return dateRangeQuery;
        }
    },
    BN("本年"){

        public DateRangeQuery getTimeRange(String dataStr) {

            DateRangeQuery dateRangeQuery = new DateRangeQuery();
            Date date = DateUtil.date();
            Date beginOfDay = DateUtil.beginOfYear(date);

            dateRangeQuery.setTimeGe(beginOfDay.toInstant()
                    .atZone(ZoneId.systemDefault())
                    .toLocalDateTime());
            //
            Date endOfDay = DateUtil.endOfYear(date);
            dateRangeQuery.setTimeLe(endOfDay.toInstant()
                    .atZone(ZoneId.systemDefault())
                    .toLocalDateTime());
            return dateRangeQuery;
        }
    },
    BY("本月"){

        public DateRangeQuery getTimeRange(String dataStr) {

            DateRangeQuery dateRangeQuery = new DateRangeQuery();
            Date date = DateUtil.date();
            Date beginOfDay = DateUtil.beginOfMonth(date);

            dateRangeQuery.setTimeGe(beginOfDay.toInstant()
                    .atZone(ZoneId.systemDefault())
                    .toLocalDateTime());
            //
            Date endOfDay = DateUtil.endOfMonth(date);
            dateRangeQuery.setTimeLe(endOfDay.toInstant()
                    .atZone(ZoneId.systemDefault())
                    .toLocalDateTime());
            return dateRangeQuery;
        }
    };


    public  String msg;

    DateEnum(String msg){
        this.msg = msg;
    }



}

PO
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class DateRangeQuery {



    @Schema(description = "待办生成时间-开始")
    private LocalDateTime timeGe;

    @Schema(description = "待办生成时间-结束")
    private LocalDateTime timeLe;


}
接口类
public interface DateRange {

     DateRangeQuery getTimeRange(String dataStr);
}
调用类方法
if(StrUtil.isNotEmpty(taskQuery.getGenTime())){

            DateRangeQuery d = DateEnum.valueOf(TaskConst.constTime.get(taskQuery.getGenTimeEq())).getTimeRange(taskQuery.getGenTimeEq());
            taskQuery.setGenTimeGe(d.getTimeGe());
            taskQuery.setGenTimeLe(d.getTimeLe());

        }
常量类
public class TaskConst {

    public static String SYSTEM_TYPE = "SYSTEM_TYPE";

    public static String JR = "今日";
    public static String BY = "本月";
    public static String BN = "本年";
    public static String BZ = "本周";

    
    public static final Map constTime = new HashMap() {
        {
            put(JR, "JR");
            put(BY , "BY ");
            put(BN , "BN ");
            put(BZ , "BZ ");
        }
    };
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/886262.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号