一般咱們須要枚舉參數不止兩個,Scala提供的枚舉類最多定義兩個參數:id:Int與name:String。不能知足咱們一般要求。api
1 object BaseEntryEnum extends Enumeration { 2 type BaseEntryEnum = Value 3 //item_base類別 4 val ITEM_TYPE_PURCHASE_CENTER = Value(31, "採購中心") 5 val ITEM_TYPE_COMPANY = Value(32, "公司") 6 val ITEM_TYPE_OI_ITEM = Value(33, "OI項") 7 val ITEM_TYPE_STORE_ITEM = Value(40, "門店白名單") 8 val ITEM_TYPE_STORE_BLACKLIST = Value(41, "門店黑名單") 9 }
以下enumeratum包能夠知足咱們需求,能夠定義任意參數。spa
引入以下包scala
"com.beachape" %% "enumeratum-argonaut" % "1.5.13"
定義複雜枚舉:code
1 package com.today.service.financetask.job.define 2 3 import com.today.api.financetask.scala.enums.TReportTypeEnum 4 import com.today.service.financetask.job._ 5 import enumeratum.EnumEntry 6 import org.quartz.Job 7 8 sealed abstract class JobEnum( 9 /** 10 * ID 11 */ 12 val jobId: String, 13 /** 14 * job名稱 15 */ 16 val jobName: String, 17 /** 18 * job定義類 19 */ 20 val jobClass : Class[_ <: Job], 21 /** 22 * 定時任務cron表達式 23 */ 24 val cron: String) extends EnumEntry 25 26 /** 27 * 全部Job 枚舉定義在此類, 不能重複 28 * jobId不能重複 29 * @author BarryWang create at 2018/5/12 10:45 30 * @version 0.0.1 31 */ 32 case object JobEnum extends enumeratum.Enum[JobEnum]{ 33 val values = findValues 34 case object DAY_TIME_PROCESS extends JobEnum("DAY_TIME_PROCESS", 35 "日次處理定時任務", classOf[DayTimeProcessJob], "0 30 2 * * ?") 36 37 case object RETIREMENT_SYNC_PROCESS extends JobEnum("RETIREMENT_SYNC_PROCESS", 38 "採購系統同步報廢單據數據定時任務", classOf[RetirementSyncProcessJob], "0 0 1 * * ?") 39 40 case object PURCHASE_ORDER_2_SYNC_PROCESS extends JobEnum("PURCHASE_ORDER_2_SYNC_PROCESS", 41 "採購系統同步PO2數據定時任務", classOf[PurchaseOrder2SyncProcessJob], "0 0 5 * * ?") 42 43 case object SEND_EMAIL_PROCESS extends JobEnum("SEND_EMAIL_PROCESS", 44 "計劃付款通知和已付款通知定時任務", classOf[SendEmailProcessJob], "0 0 18 * * ?") 45 46 case object CLOSE_ACCOUNT_BASE_DATA_PROCESS extends JobEnum("CLOSE_ACCOUNT_BASE_DATA_PROCESS", 47 "關帳基礎數據同步定時任務", classOf[CloseAccountBaseDataSyncJob], "0 30 23 L * ?") 48 49 case object INCOME_DETAIL_REPORT extends JobEnum(TReportTypeEnum.INCOMEDETAIL_REPORT.id.toString, 50 "天天生成營收明細報表定時任務", classOf[DailyGenIncomeDetailJob], "0 10 0 * * ?") 51 52 case object CHECK_ACCOUNT_PROCESS extends JobEnum("CHECK_ACCOUNT_PROCESS", 53 "對帳系統自動對帳定時任務", classOf[CheckAccountJob], "0 0 13 * * ?") 54 55 case object MEMBER_ACCOUNT_PROCESS extends JobEnum("MEMBER_ACCOUNT_PROCESS", 56 "會員自動對帳定時任務", classOf[MemberAccountJob], "0 1 0 * * ?") 57 58 case object EXPORT_REPORT_LONG_HISTORY_STATUS extends JobEnum("EXPORT_REPORT_STATUS_PROCESS", 59 "清除90天前的財務報表定時任務", classOf[ExportReportStatusProcessJob], "0 15 1 ? * *") 60 61 case object DING_TALK_LOGS_IMPORT extends JobEnum("DING_TALK_LOGS_IMPORT", 62 "導入釘釘審批記錄定時任務", classOf[DingTalkImportProcessLogsJob], "0 10 1 ? * *") 63 64 case object DING_TALK_DETAIL_IMPORT extends JobEnum("DING_TALK_DETAIL_IMPORT", 65 "導入釘釘審覈經過審批單詳情定時任務", classOf[DingTalkImportProcessDetailJob], "0 20 1 ? * *") 66 67 /** 68 * jobId與jobName映射關係 69 * @return 70 */ 71 def jobIdNameMap : Map[String, String]={ 72 JobEnum.values.map(x=> Map(x.jobId -> x.jobName)).fold(Map())((i,j) => i++j) 73 } 74 75 /** 76 * JobObject與JobEnum映射關係 77 * @return 78 */ 79 def jobObjectEnumMap = { 80 JobEnum.values.map(x=> Map(x.jobClass.getName -> x)).fold(Map())((i,j) => i++j) 81 } 82 83 /** 84 * jobId與JobEnum映射關係 85 * @return 86 */ 87 def jobIdEnumMap = { 88 JobEnum.values.map(x=> Map(x.jobId -> x)).fold(Map())((i,j) => i++j) 89 } 90 91 }