Procházet zdrojové kódy

feat: 增加自定义序列化枚举类

许家凯 před 3 roky
rodič
revize
4b6e79639a

+ 2 - 1
src/main/scala/com/winhc/bigdata/spark/ng/dynamic/CompanyDynamicRecord.scala

@@ -1,6 +1,7 @@
 package com.winhc.bigdata.spark.ng.dynamic
 
 import com.winhc.bigdata.spark.implicits.CaseClass2JsonHelper._
+import com.winhc.bigdata.spark.ng.dynamic.NgCompanyRiskLevelType.NgCompanyRiskLevelType
 import org.apache.commons.lang3.StringUtils
 import org.apache.spark.sql.Row
 
@@ -23,7 +24,7 @@ case class ChangeExtract(rowkey: String
 
 case class AssociationEntityInfo(keyno: String
                                  , name: String
-                                 , risk_level: NgCompanyRiskLevelType.RiskLevelType //变更风险等级
+                                 , risk_level: NgCompanyRiskLevelType //变更风险等级
                                  , rta_info: String //描述
                                 )
 

+ 6 - 7
src/main/scala/com/winhc/bigdata/spark/ng/dynamic/NgCompanyRiskLevelType.scala

@@ -1,15 +1,14 @@
 package com.winhc.bigdata.spark.ng.dynamic
 
+import com.winhc.bigdata.spark.ng.utils.Enum
 
 /**
  * @author: XuJiakai
  * @date: 2021/6/22 15:52
  */
-object NgCompanyRiskLevelType extends Enumeration {
-  type RiskLevelType = Value //声明枚举对外暴露的变量类型
-  val Positive = Value("0") //利好信息
-  val Prompt = Value("1") //提示信息
-  val Caution  = Value("2") //警示信息
-
-  def showAll = this.values.foreach(println) // 打印所有的枚举值
+object NgCompanyRiskLevelType extends Enum[String] {
+  type NgCompanyRiskLevelType = Value //声明枚举对外暴露的变量类型
+  val Positive: NgCompanyRiskLevelType = "0" //利好信息
+  val Prompt: NgCompanyRiskLevelType = "1" //提示信息
+  val Caution: NgCompanyRiskLevelType = "2" //警示信息
 }

+ 3 - 2
src/main/scala/com/winhc/bigdata/spark/ng/dynamic/utils/CompanyDynamicUtils.scala

@@ -1,6 +1,7 @@
 package com.winhc.bigdata.spark.ng.dynamic.utils
 
-import com.winhc.bigdata.spark.ng.dynamic.{AssociationEntityInfo, NgCompanyRiskLevelType}
+import com.winhc.bigdata.spark.ng.dynamic.AssociationEntityInfo
+import com.winhc.bigdata.spark.ng.dynamic.NgCompanyRiskLevelType.NgCompanyRiskLevelType
 import org.apache.commons.lang3.StringUtils
 
 /**
@@ -9,7 +10,7 @@ import org.apache.commons.lang3.StringUtils
  */
 object CompanyDynamicUtils {
 
-  def getAssociationEntityInfo(keyno: String, name: String, risk_level: NgCompanyRiskLevelType.RiskLevelType, rta_info: String): Seq[AssociationEntityInfo] = {
+  def getAssociationEntityInfo(keyno: String, name: String, risk_level: NgCompanyRiskLevelType, rta_info: String): Seq[AssociationEntityInfo] = {
     Seq(AssociationEntityInfo(keyno = keyno, name = name, risk_level = risk_level, rta_info = rta_info))
   }
 

+ 3 - 2
src/main/scala/com/winhc/bigdata/spark/ng/dynamic/utils/DailyAggHandle.scala

@@ -1,6 +1,7 @@
 package com.winhc.bigdata.spark.ng.dynamic.utils
 
 import com.alibaba.fastjson.JSON
+import com.winhc.bigdata.spark.ng.dynamic.NgCompanyRiskLevelType.NgCompanyRiskLevelType
 import com.winhc.bigdata.spark.ng.dynamic._
 import org.apache.commons.lang3.StringUtils
 
@@ -13,7 +14,7 @@ import scala.collection.mutable
 abstract class DailyAggHandle() extends NgCompanyDynamicHandle {
   override def filter: (String, String, Seq[String], Map[String, String], Map[String, String]) => Boolean = (update_type: String, biz_date: String, change_fields: Seq[String], old_data: Map[String, String], new_data: Map[String, String]) => update_type.equals("insert")
 
-  def getDynamicInfo(new_data: Map[String, String]): (String, Map[String, String])
+  def getDynamicInfo(new_data: Map[String, String]): (String, Map[String, Any])
 
   def getAssociationEntityInfo(new_data: Map[String, String]): Seq[AssociationEntityInfo]
 
@@ -92,7 +93,7 @@ abstract class DailyAggHandle() extends NgCompanyDynamicHandle {
 
     */
   protected def getEntity(json: String, id_key: String, name_key: String
-                          , risk_level: NgCompanyRiskLevelType.RiskLevelType //变更风险等级
+                          , risk_level: NgCompanyRiskLevelType //变更风险等级
                           , rta_info: String //描述
                          ): Seq[AssociationEntityInfo] = {
     if (StringUtils.isEmpty(json)) {

+ 10 - 0
src/main/scala/com/winhc/bigdata/spark/ng/utils/Enum.scala

@@ -0,0 +1,10 @@
+package com.winhc.bigdata.spark.ng.utils
+
+/**
+ * @author: XuJiakai
+ * @date: 2021/7/7 17:36
+ */
+trait Enum[_V] {
+  type Value <: _V
+  protected implicit def v2v(v: _V): Value = v.asInstanceOf[Value]
+}