Explorar o código

feat: 企业失信被执动态

- 企业失信被执企业变更
- 企业失信被执企业动态
许家凯 %!s(int64=4) %!d(string=hai) anos
pai
achega
4b12216ab4

+ 1 - 0
src/main/scala/com/winhc/bigdata/spark/jobs/chance/ChangeExtract.scala

@@ -320,6 +320,7 @@ object ChangeExtract {
     , Args(tableName = "company", primaryKey = "cid", primaryFields = "name,legal_entity_id,company_org_type,reg_location,to_time,business_scope,reg_institute,reg_status,reg_capital,actual_capital_amount,cancel_date,cancel_reason")
     , Args(tableName = "company_illegal_info",  primaryFields = "remove_reason")
     , Args(tableName = "company_finance",  primaryFields = "round")
+    , Args(tableName = "company_dishonest_info",  primaryFields = "case_no")
   )
 
   private case class Args(project: String = "winhc_eci_dev"

+ 19 - 0
src/main/scala/com/winhc/bigdata/spark/jobs/chance/table/company_dishonest_info.scala

@@ -0,0 +1,19 @@
+package com.winhc.bigdata.spark.jobs.chance.table
+
+import com.winhc.bigdata.spark.jobs.chance.CompanyChangeHandle
+import com.winhc.bigdata.spark.utils.{ChangeExtractUtils, DateUtils}
+
+/**
+ * @Author: XuJiakai
+ * @Date: 2020/8/12 18:50
+ * @Description: 企业失信被执
+ */
+case class company_dishonest_info(equCols: Seq[String]) extends CompanyChangeHandle {
+  override def getUpdateTitle(newMap: Map[String, String]): String = "企业失信被执发生变化"
+
+  override def getInsertTitle(newMap: Map[String, String]): String = s"新增1条企业失信信息:${newMap.getOrElse("court","")}"
+
+  override def getLabel(oldMap: Map[String, String], newMap: Map[String, String]): String = ChangeExtractUtils.getTags(newMap, "企业失信被执", Array("name", "case_no", "court", "gist_dd", "gist_unit"))
+
+  override def getBizTime(newMap: Map[String, String]): String = DateUtils.getNotNullStr(newMap("pub_date"),newMap("reg_time"),newMap("appro_time"),newMap("update_time"))
+}

+ 1 - 0
src/main/scala/com/winhc/bigdata/spark/jobs/dynamic/CompanyDynamic.scala

@@ -195,6 +195,7 @@ object CompanyDynamic {
     , Args(tableName = "company_mortgage_info", bName = 1)
     , Args(tableName = "company_stock_announcement", bName = 1)
     , Args(tableName = "company_finance", bName = 1)
+    , Args(tableName = "company_dishonest_info", bName = 1)
   )
 
   private case class Args(project: String = "winhc_eci_dev"

+ 3 - 3
src/main/scala/com/winhc/bigdata/spark/jobs/dynamic/CompanyDynamicHandle.scala

@@ -16,7 +16,7 @@ trait CompanyDynamicHandle {
     , "company_land_mortgage" -> "land_mortgage" //土地抵押
     , "company_bid_list" -> "tender_es" //中标信息ES
     , "" -> "enterprise_shixin" //失信
-    , "" -> "enterprise_zhixing" //被执
+    , "company_dishonest_info" -> "enterprise_zhixing" //被执
     , "" -> "shareholder_shixin" //股东失信
     , "" -> "shareholder_zhixing" //股东被执
     , "" -> "tender_qichacha" //中标信息企查查
@@ -52,7 +52,7 @@ trait CompanyDynamicHandle {
   private val table_2_info_type = Map(
     "CompanyDynamicHandleTest" -> "0"
     , "company" -> "1" //工商信息
-    , "" -> "2" // 企业失信被执
+    , "company_dishonest_info" -> "2" // 企业失信被执
     , "" -> "3" // 企业股东失信被执
     , "company_abnormal_info" -> "4" // 经营异常
     , "" -> "5" // 知识产权
@@ -99,7 +99,7 @@ trait CompanyDynamicHandle {
 
   //风险等级映射
   private val info_risk_level_map = Map(
-    "" -> "4" //企业失信被执情况
+    "company_dishonest_info" -> "4" //企业失信被执情况
     , "" -> "4" //股东失信被执情况
     , "" -> "4" //股权冻结
     , "" -> "4" //司法拍卖

+ 53 - 0
src/main/scala/com/winhc/bigdata/spark/jobs/dynamic/tables/company_dishonest_info.scala

@@ -0,0 +1,53 @@
+package com.winhc.bigdata.spark.jobs.dynamic.tables
+
+import com.winhc.bigdata.spark.jobs.dynamic.CompanyDynamicHandle
+import com.winhc.bigdata.spark.implicits.MapHelper._
+
+/**
+ * @Author: XuJiakai
+ * @Date: 2020/8/12 18:50
+ * @Description: 企业失信被执
+ */
+case class company_dishonest_info() extends CompanyDynamicHandle {
+  /**
+   * 信息描述
+   *
+   * @param old_map
+   * @param new_map
+   * @return
+   */
+  override protected def get_rta_desc(old_map: Map[String, String], new_map: Map[String, String]): String = s"新增1条企业失信信息:${new_map.getOrElse("court", "")}"
+
+  /**
+   * 变更内容
+   *
+   * @param old_map
+   * @param new_map
+   * @return
+   */
+  override protected def get_change_content(old_map: Map[String, String], new_map: Map[String, String], cname: String): String = new_map.toJson(Seq(
+    "name->失信人名称"
+    , "age->年龄"
+    , "sexy->性别"
+    , "case_no->案号"
+    , "focus_num->关注数"
+    , "card_num"
+    , "legal_name->法人、负责人姓名"
+    , "legal_name_id->法人标识"
+    , "legal_name_type"
+    , "staff->法定负责人/主要负责人信息"
+    , "area->省份地区"
+    , "court->法院"
+    , "gist_dd->执行依据文号"
+    , "reg_time->立案时间"
+    , "gist_unit->做出执行的依据单位"
+    , "duty->生效法律文书确定的义务"
+    , "performance->履行情况"
+    , "unperform_part->未履行"
+    , "performed_part->已履行"
+    , "action_content->失信被执行人行为具体情形"
+    , "pub_date->发布时间"
+    , "lawsuit_url"
+    , "appro_time->与官网核准的时间"
+  ))
+}

+ 41 - 5
src/main/scala/com/winhc/bigdata/spark/utils/DateUtils.scala

@@ -14,19 +14,55 @@ object DateUtils {
     fm.parse(date).getTime / 1000
   }
 
+  /**
+   * 获取第一个不为空的字符串
+   * @param date
+   * @return
+   */
+  def getNotNullStr(date: String*): String = date.filter(_ != null).head
+
+  /**
+   * 获取最小的一个日期,如果有异常情况则反回第一个日期
+   *
+   * @param date
+   * @return
+   */
+  def getMinDate(date: String*): String = {
+    val notNullDate = date.filter(_ != null)
+    if (notNullDate.map(_.length).distinct.length != 1) {
+      return notNullDate.head
+    }
+    var minDate: String = null
+    for (i <- 0 until notNullDate.length - 1) {
+      minDate = getMaxDateBy2(notNullDate(i), notNullDate(i + 1), true)
+    }
+    minDate
+  }
 
   /**
    * 获取最大的一个日期,如果有异常情况则反回第一个日期
    *
-   * @param date1
-   * @param date2
+   * @param date
    */
-  def getMaxDate(date1: String, date2: String): String = {
+  def getMaxDate(date: String*): String = {
+    val notNullDate = date.filter(_ != null)
+    if (notNullDate.map(_.length).distinct.length != 1) {
+      return notNullDate.head
+    }
+    var maxDate: String = null
+    for (i <- 0 until notNullDate.length - 1) {
+      maxDate = getMaxDateBy2(notNullDate(i), notNullDate(i + 1))
+    }
+    maxDate
+  }
+
+  private def getMaxDateBy2(date1: String, date2: String, reverse: Boolean = false): String = {
     try {
       if (date1.length != date2.length) {
         return date1
       }
-      date1.compareTo(date2) match {
+      val re = if (reverse) -1 else 1
+      date1.compareTo(date2) * re match {
         case -1 => date2
         case 1 => date1
         case _ => date1
@@ -37,7 +73,7 @@ object DateUtils {
   }
 
   def main(args: Array[String]): Unit = {
-    println(getMaxDate("2003-10-12 10:00:00", "2003-11-12 00:00:01"))
+    println(getNotNullStr(null,"2003-10-12 10:00:00", null, "2003-11-12 00:00:02"))
   }
 
 }