Pārlūkot izejas kodu

add:注册资本转换

许家凯 4 gadi atpakaļ
vecāks
revīzija
397515813c

+ 69 - 0
src/main/scala/com/winhc/bigdata/spark/utils/RegCapitalAmount.scala

@@ -0,0 +1,69 @@
+package com.winhc.bigdata.spark.utils
+
+import org.apache.commons.lang3.StringUtils
+
+import java.text.DecimalFormat
+
+/**
+ * @author: XuJiakai
+ * @date: 2020/12/5 11:53
+ */
+object RegCapitalAmount {
+  private val df = new DecimalFormat("00.00")
+
+  private def double2String(d: Double): String = df.format(d)
+
+
+  private val unit_w = Map(
+    "欧元" -> 7.9145,
+    "英镑" -> 8.7751,
+    "美元" -> 6.5301,
+    "港元" -> 0.8425,
+    "港币" -> 0.8425,
+    "台币" -> 0.2316,
+    "日元" -> 0.06270,
+    "英镑" -> 8.7751,
+    "加拿大元" -> 5.1096,
+    "新加坡元" -> 4.8907,
+    "澳元" -> 4.846,
+    "卢布" -> 0.08825,
+    "泰铢" -> 0.2162,
+    "韩元" -> 0.006025,
+    "澳门元" -> 0.8178
+  )
+
+
+  private val pat = "[^0-9.]".r
+
+  def getAmount(regCapital: String): String = {
+    if (StringUtils.isEmpty(regCapital))
+      return null
+
+    var unit: Double = unit_w.filter(e => {
+      regCapital.contains(e._1)
+    }).values.headOption.getOrElse(1d)
+
+    if (regCapital.contains("亿")) {
+      unit *= 100000000.0d
+    } else if (regCapital.contains("百万")) {
+      unit *= 1000000.0d
+    } else if (regCapital.contains("万")) {
+      unit *= 10000.0d
+    }
+
+    unit *= 100.0d
+
+    try {
+      val amount = pat.replaceAllIn(regCapital, " ").split("\\s+")(0).toDouble
+      double2String(amount * unit)
+    } catch {
+      case ex: Exception => {
+        null
+      }
+    }
+  }
+
+  def main(args: Array[String]): Unit = {
+    print(getAmount("1万元"))
+  }
+}