Scala 定义复杂枚举
通常我们需要枚举参数不止两个,Scala提供的枚举类最多定义两个参数:id:Int与name:String。不能满足我们通常要求。
object BaseEntryEnum extends Enumeration {
type BaseEntryEnum = Value
//item_base类别
val ITEM_TYPE_PURCHASE_CENTER = Value(31, "采购中心")
val ITEM_TYPE_COMPANY = Value(32, "公司")
val ITEM_TYPE_OI_ITEM = Value(33, "OI项")
val ITEM_TYPE_STORE_ITEM = Value(40, "门店白名单")
val ITEM_TYPE_STORE_BLACKLIST = Value(41, "门店黑名单")
}
如下enumeratum包可以满足我们需求,可以定义任意参数。
引入如下包
"com.beachape" %% "enumeratum-argonaut" % "1.5.13"
定义复杂枚举:
package com.today.service.financetask.job.define import com.today.api.financetask.scala.enums.TReportTypeEnum
import com.today.service.financetask.job._
import enumeratum.EnumEntry
import org.quartz.Job sealed abstract class JobEnum(
/**
* ID
*/
val jobId: String,
/**
* job名称
*/
val jobName: String,
/**
* job定义类
*/
val jobClass : Class[_ <: Job],
/**
* 定时任务cron表达式
*/
val cron: String) extends EnumEntry /**
* 所有Job 枚举定义在此类, 不能重复
* jobId不能重复
* @author BarryWang create at 2018/5/12 10:45
* @version 0.0.1
*/
case object JobEnum extends enumeratum.Enum[JobEnum]{
val values = findValues
case object DAY_TIME_PROCESS extends JobEnum("DAY_TIME_PROCESS",
"日次处理定时任务", classOf[DayTimeProcessJob], "0 30 2 * * ?") case object RETIREMENT_SYNC_PROCESS extends JobEnum("RETIREMENT_SYNC_PROCESS",
"采购系统同步报废单据数据定时任务", classOf[RetirementSyncProcessJob], "0 0 1 * * ?") case object PURCHASE_ORDER_2_SYNC_PROCESS extends JobEnum("PURCHASE_ORDER_2_SYNC_PROCESS",
"采购系统同步PO2数据定时任务", classOf[PurchaseOrder2SyncProcessJob], "0 0 5 * * ?") case object SEND_EMAIL_PROCESS extends JobEnum("SEND_EMAIL_PROCESS",
"计划付款通知和已付款通知定时任务", classOf[SendEmailProcessJob], "0 0 18 * * ?") case object CLOSE_ACCOUNT_BASE_DATA_PROCESS extends JobEnum("CLOSE_ACCOUNT_BASE_DATA_PROCESS",
"关账基础数据同步定时任务", classOf[CloseAccountBaseDataSyncJob], "0 30 23 L * ?") case object INCOME_DETAIL_REPORT extends JobEnum(TReportTypeEnum.INCOMEDETAIL_REPORT.id.toString,
"每天生成营收明细报表定时任务", classOf[DailyGenIncomeDetailJob], "0 10 0 * * ?") case object CHECK_ACCOUNT_PROCESS extends JobEnum("CHECK_ACCOUNT_PROCESS",
"对账系统自动对账定时任务", classOf[CheckAccountJob], "0 0 13 * * ?") case object MEMBER_ACCOUNT_PROCESS extends JobEnum("MEMBER_ACCOUNT_PROCESS",
"会员自动对账定时任务", classOf[MemberAccountJob], "0 1 0 * * ?") case object EXPORT_REPORT_LONG_HISTORY_STATUS extends JobEnum("EXPORT_REPORT_STATUS_PROCESS",
"清除90天前的财务报表定时任务", classOf[ExportReportStatusProcessJob], "0 15 1 ? * *") case object DING_TALK_LOGS_IMPORT extends JobEnum("DING_TALK_LOGS_IMPORT",
"导入钉钉审批记录定时任务", classOf[DingTalkImportProcessLogsJob], "0 10 1 ? * *") case object DING_TALK_DETAIL_IMPORT extends JobEnum("DING_TALK_DETAIL_IMPORT",
"导入钉钉审核通过审批单详情定时任务", classOf[DingTalkImportProcessDetailJob], "0 20 1 ? * *") /**
* jobId与jobName映射关系
* @return
*/
def jobIdNameMap : Map[String, String]={
JobEnum.values.map(x=> Map(x.jobId -> x.jobName)).fold(Map())((i,j) => i++j)
} /**
* JobObject与JobEnum映射关系
* @return
*/
def jobObjectEnumMap = {
JobEnum.values.map(x=> Map(x.jobClass.getName -> x)).fold(Map())((i,j) => i++j)
} /**
* jobId与JobEnum映射关系
* @return
*/
def jobIdEnumMap = {
JobEnum.values.map(x=> Map(x.jobId -> x)).fold(Map())((i,j) => i++j)
} }
Scala 定义复杂枚举的更多相关文章
- Scala进阶之路-Scala中的枚举用法案例展示
Scala进阶之路-Scala中的枚举用法案例展示 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Scala中的枚举值和Java中的枚举值有点差别,不过使用起来也都差大同小异,我这 ...
- Scala学习笔记--枚举
枚举 scala不用关注枚举的特别语法,取而代之的是标准库中的类, scala.Enumeration 想要创建新的枚举,只需要拓展这个类的对象即可 object Color extends Enum ...
- scala.的Enumeration枚举示例(转)
简介 在scala中没有枚举类型,但在标准类库中提供了Enumeration类来产出枚举.扩展Enumeration类后,调用value方法类初始化枚举中的可能值. 内部类value实际上是一个抽象类 ...
- go常量的定义和枚举类型
const a,b int = 1,2 const a,b = 1,2 const ( a = "hello" b,c =3,4 ) 常量数值可作为各种类型使用 枚举类型的 ...
- 一个C++宏定义与枚举定义重复的编译错误
C++的开发效率低是众所周知的,原因比如有: 语言复杂度高 编译效率低 工具链不够完整高效(尤其是linux下) 另外一个恐怕是不少编译错误让人摸不着头脑,今天碰到一个,举个例子: #include ...
- hdu3118Arbiter (使用二分图的定义,枚举每个状态)
Arbiter Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Sub ...
- Quartz实现分布式可动态配置的定时任务
关键词: 1. 定时任务 2. 分布式 3. 可动态配置触发时间 一般通过Quartz实现定时任务很简单.如果实现分布式定时任务需要结合分布式框架选择master节点触发也可以实现.但我们有个实际需求 ...
- Objective-C枚举的几种定义方式与使用
假设我们需要表示网络连接状态,可以用下列枚举表示: enum CSConnectionState { CSConnectionStateDisconnected, CSConnectionStateC ...
- oc中的枚举定义
typedef NS_ENUM(类型,枚举名){ 枚举名+值名, 枚举名+值名,}; 该方法定义的枚举,OC会自动把其转换成合适当前版本的枚举.如果枚举值可合并的话 NS_E ...
随机推荐
- VS 插件 ReSharper 的个人习惯
个人习惯 1. 按 F12 恢复转到定义 很多时候,我个人不太喜欢一按 F12 就跳转到 ReSharper 自带的 查看代码浏览器,我还是喜欢 VS 默认的,于是点击菜单栏的 "RESHA ...
- 一个简单的利用 WebClient 异步下载的示例(五)(完结篇)
接着上一篇,我们继续来优化.我们的 SkyParallelWebClient 可否支持切换“同步下载模式”和“异步下载模式”呢,好处是大量的代码不用改,只需要调用 skyParallelWebClie ...
- 《数据结构》《C++程序设计》《计算机组成原理》中的英语名词
一.数据结构 data 数据data element 数据元素data item 数据项data object 数据对象data structure 数据结构ADT (Abstruct Date Ty ...
- virsh console hangs at the escape character “^]”
I am trying to kickstart a newly built VM. I am stuck with the following. Want to start with a conso ...
- 《 .NET并发编程实战》实战习题集 - 5 - 并发查找等待算法
先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.
- 【mybatis】mybatis传参的几种方式
参考地址: https://my.oschina.net/liuzelin/blog/2966633
- Abap内表
什么是内表:内表是内存中建立的一个临时表,你可以在程序运行时对表中的数据进行,插入,修改,删除等操作,程序跑完了,就会被释放. 定义类型:通过types开头定义 TYPES: BEGIN OF lin ...
- ASP.NET Core快速入门(第6章:ASP.NET Core MVC)--学习笔记
课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务40:介绍 1.Individual authentication 模板 ...
- webservice因引用Oracle.DataAccess.dll导致发布前预编译不通过
这个问题最初是什么问题已经忘了,虽然就在几小时前/
- Winform中设置ZedGraph因设置小刻度导致的竖直虚线显示过多
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...