|
@@ -0,0 +1,153 @@
|
|
|
|
+package com.winhc.bigdata.spark.ng.dynamic.handle
|
|
|
|
+
|
|
|
|
+import com.winhc.bigdata.spark.ng.dynamic.utils.CompanyDynamicUtils
|
|
|
|
+import com.winhc.bigdata.spark.ng.dynamic.{AssociationEntityInfo, ChangeExtract, CompanyDynamicRecord, NgCompanyDynamicHandle, NgCompanyRiskLevelType}
|
|
|
|
+import com.winhc.bigdata.spark.utils.RegCapitalAmount
|
|
|
|
+
|
|
|
|
+import scala.collection.mutable
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * @author: XuJiakai
|
|
|
|
+ * @date: 2021/6/22 16:04
|
|
|
|
+ */
|
|
|
|
+case class company() extends NgCompanyDynamicHandle {
|
|
|
|
+
|
|
|
|
+ private def getCompanyDynamicRecord(change_extract: ChangeExtract
|
|
|
|
+ , dynamic_info: Map[String, String]
|
|
|
|
+ , update_field: String
|
|
|
|
+ , association_entity_info: Seq[AssociationEntityInfo]
|
|
|
|
+ ): CompanyDynamicRecord = {
|
|
|
|
+ val tn = change_extract.tn
|
|
|
|
+ val update_type = change_extract.update_type
|
|
|
|
+ val old_data = change_extract.old_data
|
|
|
|
+ val new_data = change_extract.new_data
|
|
|
|
+ val biz_date = change_extract.biz_date
|
|
|
|
+ val rowkey = change_extract.rowkey
|
|
|
|
+ val update_time = change_extract.update_time
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ CompanyDynamicRecord(
|
|
|
|
+ id = CompanyDynamicUtils.generateId(rowkey, biz_date, tn, update_field)
|
|
|
|
+ , association_entity_info = association_entity_info
|
|
|
|
+ , rowkey = rowkey
|
|
|
|
+ , tn = tn
|
|
|
|
+ , update_type = update_type
|
|
|
|
+ , dynamic_info = dynamic_info
|
|
|
|
+ , agg_detail_text = null
|
|
|
|
+ , agg_detail_rowkey = null
|
|
|
|
+ , old_record = old_data
|
|
|
|
+ , new_record = new_data
|
|
|
|
+ , change_time = biz_date
|
|
|
|
+ , update_time = update_time
|
|
|
|
+ , create_time = null
|
|
|
|
+ )
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private def getCompanyDynamicRecord(change_extract: ChangeExtract, dynamic_info: Map[String, String], update_field: String): CompanyDynamicRecord = {
|
|
|
|
+ val company_id = change_extract.company_id
|
|
|
|
+ val company_name = change_extract.company_name
|
|
|
|
+ getCompanyDynamicRecord(change_extract, dynamic_info, update_field, Seq(AssociationEntityInfo(keyno = company_id, name = company_name, risk_level = NgCompanyRiskLevelType.Prompt, rta_info = null)))
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ def flat_map: (ChangeExtract) => Seq[CompanyDynamicRecord] = (change_extract: ChangeExtract) => {
|
|
|
|
+ val change_fields = change_extract.change_fields
|
|
|
|
+ val tn = change_extract.tn
|
|
|
|
+ val company_id = change_extract.company_id
|
|
|
|
+ val company_name = change_extract.company_name
|
|
|
|
+ val update_type = change_extract.update_type
|
|
|
|
+ val old_data = change_extract.old_data
|
|
|
|
+ val new_data = change_extract.new_data
|
|
|
|
+ val biz_date = change_extract.biz_date
|
|
|
|
+ val rowkey = change_extract.rowkey
|
|
|
|
+ val update_time = change_extract.update_time
|
|
|
|
+ var list: mutable.Seq[CompanyDynamicRecord] = mutable.Seq.empty
|
|
|
|
+
|
|
|
|
+ update_type match {
|
|
|
|
+ case "insert" => {
|
|
|
|
+ val legal_entity_id = new_data("legal_entity_id")
|
|
|
|
+ val legal_entity_name = new_data("legal_entity_name")
|
|
|
|
+ val dynamic_info = Map(
|
|
|
|
+ "code" -> "100100",
|
|
|
|
+ "description" -> "公司新成立"
|
|
|
|
+ )
|
|
|
|
+ list = list :+ getCompanyDynamicRecord(change_extract = change_extract
|
|
|
|
+ , dynamic_info = dynamic_info
|
|
|
|
+ , update_field = null
|
|
|
|
+ , association_entity_info = Seq(AssociationEntityInfo(keyno = legal_entity_id, name = legal_entity_name, risk_level = NgCompanyRiskLevelType.Prompt, rta_info = null))
|
|
|
|
+ )
|
|
|
|
+ }
|
|
|
|
+ case "update" => {
|
|
|
|
+ for (elem <- change_fields.intersect("name,reg_capital,legal_entity_name,reg_location,business_scope,reg_status_std".split(","))) {
|
|
|
|
+ elem match {
|
|
|
|
+ case "name" => {
|
|
|
|
+ val dynamic_info = Map(
|
|
|
|
+ "code" -> "100101",
|
|
|
|
+ "description" -> "公司名称发生变化"
|
|
|
|
+ )
|
|
|
|
+ list = list :+ getCompanyDynamicRecord(change_extract, dynamic_info, "name")
|
|
|
|
+ }
|
|
|
|
+ case "reg_capital" => { //注册资本需发生实质性变化
|
|
|
|
+ val old_reg_capital: String = RegCapitalAmount.getAmount(old_data("reg_capital"))
|
|
|
|
+ val new_reg_capital: String = RegCapitalAmount.getAmount(new_data("reg_capital"))
|
|
|
|
+ if (old_reg_capital != null && new_reg_capital != null) {
|
|
|
|
+ if (!old_reg_capital.equals(new_reg_capital)) {
|
|
|
|
+ val dynamic_info = Map(
|
|
|
|
+ "code" -> "100102",
|
|
|
|
+ "description" -> "注册资本发生变化"
|
|
|
|
+ )
|
|
|
|
+ list = list :+ getCompanyDynamicRecord(change_extract, dynamic_info, "reg_capital")
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ case "legal_entity_name" => {
|
|
|
|
+ val dynamic_info = Map(
|
|
|
|
+ "code" -> "100103",
|
|
|
|
+ "description" -> "法定代表人发生变化"
|
|
|
|
+ )
|
|
|
|
+ list = list :+ getCompanyDynamicRecord(change_extract, dynamic_info, "legal_entity_name")
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ case "reg_location" => {
|
|
|
|
+ val dynamic_info = Map(
|
|
|
|
+ "code" -> "100104",
|
|
|
|
+ "description" -> "公司注册地址发生变化"
|
|
|
|
+ )
|
|
|
|
+ list = list :+ getCompanyDynamicRecord(change_extract, dynamic_info, "reg_location")
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ case "business_scope" => {
|
|
|
|
+ val dynamic_info = Map(
|
|
|
|
+ "code" -> "100105",
|
|
|
|
+ "description" -> "公司经营范围发生变化"
|
|
|
|
+ )
|
|
|
|
+ list = list :+ getCompanyDynamicRecord(change_extract, dynamic_info, "business_scope")
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ case "reg_status_std" => {
|
|
|
|
+ val dynamic_info = Map(
|
|
|
|
+ "code" -> "100106",
|
|
|
|
+ "description" -> "公司状态发生变化"
|
|
|
|
+ )
|
|
|
|
+ val reg_status_std = new_data("reg_status_std")
|
|
|
|
+ if (reg_status_std.contains("销")) {
|
|
|
|
+ list = list :+ getCompanyDynamicRecord(change_extract, dynamic_info, "reg_status_std",
|
|
|
|
+ association_entity_info = Seq(AssociationEntityInfo(keyno = company_id, name = company_name, risk_level = NgCompanyRiskLevelType.Caution, rta_info = null))
|
|
|
|
+ )
|
|
|
|
+ } else {
|
|
|
|
+ list = list :+ getCompanyDynamicRecord(change_extract, dynamic_info, "reg_status_std")
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ case _ => null
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ case _ => null
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ list
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|