|
|
# 目前工商上线处理流程
|
|
|
|
|
|
|
|
|
```plantuml
|
|
|
|
|
|
@startuml
|
|
|
|
|
|
file spider_log
|
|
|
|
|
|
package mongo {
|
|
|
database "ic" #green
|
|
|
database "partner" #green
|
|
|
database "employee" #green
|
|
|
database "其他分维度表" #green
|
|
|
}
|
|
|
|
|
|
package mysql {
|
|
|
database ic_base #green
|
|
|
database ic_biz #green
|
|
|
}
|
|
|
queue "topic: collie-ic-data-to-mongo" #red
|
|
|
queue "topic: collie-ic-crawler-data" #red
|
|
|
queue "topic: collie-ic-crawler-data-std" #red
|
|
|
queue "topic: ic_spider_all" #red
|
|
|
|
|
|
cloud hudi
|
|
|
cloud 企业动态监控
|
|
|
database company_contact_detail #green
|
|
|
database "es: company" #lightgreen
|
|
|
database "es: collie-ic-crawler-meta-*" #lightgreen
|
|
|
|
|
|
[spider_log] --> [topic: collie-ic-data-to-mongo]: logstash
|
|
|
[topic: collie-ic-data-to-mongo] --> [udm: ic_spider_data]: consumer多进程
|
|
|
[udm: ic_spider_data] --> [ic]
|
|
|
[udm: ic_spider_data] --> [partner]
|
|
|
[udm: ic_spider_data] --> [employee]
|
|
|
[udm: ic_spider_data] --> [其他分维度表]
|
|
|
[ic] --> [hudi]
|
|
|
[partner] --> [hudi]
|
|
|
[employee] --> [hudi]
|
|
|
[其他分维度表] --> [hudi]
|
|
|
[udm: ic_spider_data] --> [企业动态监控]
|
|
|
[udm: ic_spider_data] --> [topic: collie-ic-crawler-data]
|
|
|
[udm: ic_spider_data] --> [es: company]: 通过接口打标签
|
|
|
[topic: collie-ic-crawler-data] --> [udm: crawler_to_hdfs]: consumer单进程
|
|
|
[topic: collie-ic-crawler-data] --> [企业动态监控]: udm: parse_change_content
|
|
|
[udm: crawler_to_hdfs] --> [topic: collie-ic-crawler-data-std]
|
|
|
[topic: collie-ic-crawler-data-std] --> [udm: update_company_index]: data_pump
|
|
|
[topic: collie-ic-crawler-data-std] --> [es: collie-ic-crawler-meta-*]: logstash
|
|
|
[udm: update_company_index] --> [es: company]
|
|
|
[topic: collie-ic-crawler-data-std] --> [company_contact_detail]: consumer
|
|
|
[topic: collie-ic-crawler-data] --> [udm: crawler_to_hdfs(1)+cleaning]: data_pump多进程
|
|
|
[udm: crawler_to_hdfs(1)+cleaning] --> [topic: ic_spider_all]
|
|
|
[topic: ic_spider_all] --> [udm: sync_mysql_new]: data_pump多进程
|
|
|
[udm: sync_mysql_new] --> [ic_base]
|
|
|
[udm: sync_mysql_new] --> [ic_biz]
|
|
|
|
|
|
|
|
|
@enduml
|
|
|
```
|
|
|
|
|
|
# 目标处理流程
|
|
|
|
|
|
```plantuml
|
|
|
@startuml
|
|
|
|
|
|
package ic_ods {
|
|
|
database company_base
|
|
|
database company_legalperson
|
|
|
database company_partner
|
|
|
database company_...
|
|
|
}
|
|
|
|
|
|
package ic_mongo {
|
|
|
database ic
|
|
|
database partner
|
|
|
database employee
|
|
|
database "其他分维度表"
|
|
|
}
|
|
|
|
|
|
|
|
|
package ic_mysql2B {
|
|
|
database ic_base
|
|
|
database ic_biz
|
|
|
}
|
|
|
|
|
|
file spider_log
|
|
|
queue "topic: collie-ic-data-to-mongo" #red
|
|
|
queue "topic: collie-ic-data-digest"
|
|
|
queue "topic: ic-data-clean-result"
|
|
|
queue "topic: ic_ods_binlog"
|
|
|
|
|
|
database "es: ic_spider_task"
|
|
|
|
|
|
[spider_log] --> [topic: collie-ic-data-to-mongo]: logstash
|
|
|
|
|
|
[topic: collie-ic-data-to-mongo] --> [udm: register_digest]: 单进程
|
|
|
[udm: register_digest] --> [company_base]: 新digest入库
|
|
|
[udm: register_digest] --> [topic: collie-ic-data-digest]
|
|
|
[topic: collie-ic-data-digest] --> [udms: ic_spider_data]: 多进程清洗
|
|
|
[udms: ic_spider_data] --> [topic: ic-data-clean-result]
|
|
|
[topic: ic-data-clean-result] --> [udm: sync_mysql_new]: 多进程入库
|
|
|
[topic: ic-data-clean-result] --> [es: ic_spider_task]: 更新爬虫任务
|
|
|
[es: ic_spider_task] --> [spider_log]
|
|
|
[udm: sync_mysql_new] --> [company_base]
|
|
|
[udm: sync_mysql_new] --> [company_legalperson]
|
|
|
[udm: sync_mysql_new] --> [company_partner]
|
|
|
[udm: sync_mysql_new] --> [company_...]
|
|
|
|
|
|
[company_base] --> [topic: ic_ods_binlog]: 一表一分区
|
|
|
[company_legalperson] --> [topic: ic_ods_binlog]: 一表一分区
|
|
|
[company_partner] --> [topic: ic_ods_binlog]: 一表一分区
|
|
|
[company_...] --> [topic: ic_ods_binlog]: 一表一分区
|
|
|
[topic: ic_ods_binlog] --> [udm: ic_update_data]: 多进程
|
|
|
[udm: ic_update_data] --> [topic: ic_update_data]: digest + 子维度信息
|
|
|
|
|
|
[topic: ic_ods_binlog] --> [udms: parse_changes]: 从变更记录解析曾用名,历史董高监等
|
|
|
[udms: parse_changes] --> [company_...]
|
|
|
|
|
|
[topic: ic_update_data] --> [ic]
|
|
|
[topic: ic_update_data] --> [partner]
|
|
|
[topic: ic_update_data] --> [employee]
|
|
|
[topic: ic_update_data] --> [其他分维度表]
|
|
|
|
|
|
[topic: ic_update_data] --> [ic_base]
|
|
|
[topic: ic_update_data] --> [ic_biz]
|
|
|
@enduml
|
|
|
```
|
|
|
|
|
|
# 目前工商上线流程的问题
|
|
|
|
|
|
> mongo的ic表、股东、主要人员表等没有唯一约束,导致有数据重复
|
|
|
>
|
|
|
> 多进程上线,新收录主体注册digest时冲突,导致主体重复
|
|
|
>
|
|
|
> 每天采集的大部分数据是没有变化的,但都会更新mongo,且不知道哪些字段有变化
|
|
|
>
|
|
|
> 由于mongo对同一个字段的类型没有统一约束,导致同一个字段有不同的数据类型
|
|
|
>
|
|
|
> 有些再加工字段,由于不能监控实际有变化的记录,而都放在上线程序中处理,导致上线程序做了太多事情
|
|
|
>
|
|
|
> 由于不知道实际有变化的数据信息,在更新对外输出表、联系方式表等时需要对采集的全部数据做处理,严重浪费资源
|
|
|
>
|
|
|
> 更新mongo时处理逻辑复杂,上线代码维护难度大
|
|
|
|
|
|
|
|
|
# 新的处理流程期望达到的效果
|
|
|
|
|
|
1、统一所有字段的数据类型
|
|
|
|
|
|
2、减少后续相关业务表要处理的数据量,即只处理实际数据发生变化的主体信息
|
|
|
|
|
|
3、减少数据重复
|
|
|
|
|
|
4、通过数据更新日志实现动态监控
|
|
|
|
|
|
5、解决上述目前流程的其他问题
|
|
|
|
|
|
## 待确定问题
|
|
|
|
|
|
1、水滴上需要知道哪些主体去采集更新了,也即最后采集时间,也即现在爬虫结果的lastupdatetime,新的流程中怎么处理该字段
|
|
|
|
|
|
2、注册digest时一个进程是否满足
|
|
|
|
|
|
# 采集任务提交
|
|
|
|
|
|
## 工商采集滚动更新任务索引字段
|
|
|
|
|
|
es: ic_spider_task
|
|
|
|
|
|
| 字段名 | 注释 | 字段类型 | 作用 |
|
|
|
| ---- | ---- | ---- | ---- |
|
|
|
| find_in_gsxt | 能否在公示系统查到 | int | 提交任务时带上digest,工商查不到的根据digest回写标记 |
|
|
|
| baseinfo_update_time | 基本信息更新时间 | datetime | |
|
|
|
| partner_update_time | 股东更新时间 | datetime | |
|
|
|
| employee_update_time | 主要人员更新时间 | datetime | |
|
|
|
| change_update_time | 变更记录更新时间 | datetime | |
|
|
|
| branch_update_time | 分支机构更新时间 | datetime | |
|
|
|
| allow_update_time | 行政许可更新时间 | datetime | |
|
|
|
| has_allow | 是否有行政许可 | int | 例行更新存量有行政许可的主体的行政许可维度 |
|
|
|
| punish_update_time | 行政处罚更新时间 | datetime | 其他渠道最近更新了该维度可以下轮再更新 |
|
|
|
| has_punish | 是否有行政处罚 | int | 例行更新存量有行政处罚的主体的行政处罚维度|
|
|
|
| abnormal_update_time | 经营异常更新时间 | datetime | |
|
|
|
| has_abnormal | 是否有经营异常 | int | |
|
|
|
| illegal_update_time | 严重违法更新时间 | datetime | |
|
|
|
| has_illegal | 是否有严重违法 | int | |
|
|
|
| pledge_update_time | 股权出质更新时间 | datetime | |
|
|
|
| has_pledge | 是否有股权出质 | int | |
|
|
|
| justice_update_time | 司法协助更新时间 | datetime | |
|
|
|
| has_justice | 是否有司法协助 | int | |
|
|
|
| chattel_update_time | 动产抵押更新时间 | datetime | |
|
|
|
| has_chattel | 是否有动产抵押 | int | |
|
|
|
| intellectual_update_time | 知识产权出质更新时间 | datetime | |
|
|
|
| has_intellectual | 是否有知识产权出质 | int | |
|
|
|
| clear_update_time | 清算信息更新时间 | datetime | |
|
|
|
| has_clear | 是否有清算信息 | int | |
|
|
|
| check_update_time | 抽查检查更新时间 | datetime | |
|
|
|
| has_check | 是否有抽查检查信息 | int | |
|
|
|
| random_check_update_time | 双随机抽查检查更新时间 | datetime | |
|
|
|
| has_random_check | 是否有双随机抽查检查 | int | |
|
|
|
| qy_partner_update_time | 企业自主公示股东更新时间 | datetime | |
|
|
|
| has_qy_partner | 是否有企业自主公示股东 | int | |
|
|
|
| simple_cancel_update_time | 简易注销更新时间 | datetime | |
|
|
|
| has_simple_cancel | 是否有简易注销 | int | |
|
|
|
| cancel_notice_update_time | 注销备案公告更新时间 | datetime | |
|
|
|
| has_cancel_notice | 是否有注销备案公告 | int | |
|
|
|
|
|
|
# ic_ods表结构
|
|
|
|
|
|
## 基本信息表
|
|
|
|
|
|
```sql
|
|
|
create table tb_company_base(
|
|
|
id bigint not null auto_increment comment '自增主键',
|
|
|
province_short varchar(10) default null comment '省份简称',
|
|
|
company_name_digest char(32) not null comment '主体唯一键',
|
|
|
company_name varchar(255) not null comment '主体名称',
|
|
|
n_company_name varchar(255) default null comment '标准主体名称',
|
|
|
company_code varchar(50) default null comment '注册号',
|
|
|
credit_no varchar(50) default null comment '统一信用代码',
|
|
|
org_code varchar(15) default null comment '组织机构代码',
|
|
|
tax_code varchar(50) default null comment '税务号',
|
|
|
establish_date date default null comment '成立日期',
|
|
|
legal_person varchar(255) default null comment '法定代表人',
|
|
|
legal_person_caption varchar(10) default null comment '法人头衔',
|
|
|
company_status varchar(50) default null comment '登记状态',
|
|
|
n_company_status varchar(15) default null comment '归类后的登记状态',
|
|
|
company_type varchar(50) default null comment '类型',
|
|
|
company_major_type tinyint(4) default null comment '归类后的主体类型',
|
|
|
company_minor_type tinyint(4) default null comment '企业类型编码',
|
|
|
ent_type tinyint(4) default null comment '工商原始归类后的类型',
|
|
|
composion_form varchar(20) default null comment '组成形式',
|
|
|
authority varchar(255) default null comment '登记机关',
|
|
|
issue_date date default null comment '核准日期',
|
|
|
operation_startdate varchar(20) default null comment '经营期限自',
|
|
|
operation_enddate varchar(20) default null comment '经营期限至',
|
|
|
capital varchar(50) default null comment '注册资本',
|
|
|
capital_num decimal(40,6) default null comment '注册资本数值,量纲-万',
|
|
|
currency varchar(15) default null comment '注册资本币种,默认人民币',
|
|
|
company_address varchar(300) default null comment '登记地址',
|
|
|
business_scope text default null comment '经营范围',
|
|
|
cancel_date date default null comment '注销日期',
|
|
|
cancel_reason varchar(500) default null comment '注销原因',
|
|
|
revoke_date date default null comment '吊销日期',
|
|
|
revoke_reason varchar(500) default null comment '吊销日期',
|
|
|
real_capital varchar(50) default null comment '实缴资本',
|
|
|
en_name varchar(255) default null comment '英文名称',
|
|
|
list_code varchar(15) default null comment '上市代码',
|
|
|
bond_type varchar(15) default null comment '上市证券类型',
|
|
|
stock_status varchar(10) default null comment '上市状态',
|
|
|
location varchar(50) default null comment '经纬度',
|
|
|
province varchar(20) default null comment '省份',
|
|
|
area_code char(6) default null comment '省级行政区划代码',
|
|
|
city varchar(16) default null comment '地市',
|
|
|
city_code char(6) default null comment '市级行政区划代码',
|
|
|
district varchar(16) default null comment '区县',
|
|
|
district_code char(6) default null comment '县级行政区划代码',
|
|
|
history_name varchar(1000) default null comment '工商展示历史名称',
|
|
|
parent_company_name_digest char(32) default null comment '母公司的digest',
|
|
|
last_change_date date default null comment '最后变更日期',
|
|
|
use_flag smallint(6) default '0' comment '数据有效性,10废弃删除',
|
|
|
data_source smallint(6) default '1' comment '数据标记',
|
|
|
|
|
|
create_time datetime default current_timestamp comment '入库时间',
|
|
|
update_time datetime default current_timestamp on update current_timestamp comment '更新时间',
|
|
|
primary key (id),
|
|
|
unique key idx_digest (company_name_digest),
|
|
|
key idx_name (n_company_name),
|
|
|
key idx_company_code (company_code),
|
|
|
key idx_credit_no (credit_no),
|
|
|
key idx_update_time (update_time)
|
|
|
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='主体基本信息';
|
|
|
```
|
|
|
|
|
|
## 法人表
|
|
|
|
|
|
```sql
|
|
|
create table tb_company_legalperson (
|
|
|
id bigint not null auto_increment comment '自增主键',
|
|
|
company_name_digest char(32) not null comment '主体唯一键',
|
|
|
legal_person varchar(300) not null comment '处理后法定代表人',
|
|
|
legal_person_caption varchar(20) default null comment '法人头衔',
|
|
|
appoint_delegate varchar(50) default null comment '委派代表',
|
|
|
legal_person_type tinyint(4) not null comment '法人类型,0自然人,1非自然人',
|
|
|
legal_person_id varchar(50) default null comment '法人id,根据法人类型可以是digest 或 人的id',
|
|
|
ad_id varchar(50) default null comment '委派代表id',
|
|
|
is_history tinyint(4) default '0' comment '是否历史法人,0当前法人,1历史法人',
|
|
|
lp_source tinyint(4) default '0' comment '法人来源,0官网同步,1文本解析',
|
|
|
use_flag tinyint(4) default '0' comment '数据有效性,10废弃删除',
|
|
|
include_date date default null comment '任职起始日期',
|
|
|
remove_date date default null comment '任职结束日期',
|
|
|
create_time datetime default current_timestamp comment '入库时间',
|
|
|
update_time datetime default current_timestamp on update current_timestamp comment '更新时间',
|
|
|
primary key (id),
|
|
|
unique key idx_company_lp (company_name_digest, legal_person),
|
|
|
key idx_update_time (update_time)
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='法定代表人表';
|
|
|
```
|
|
|
|
|
|
## 股东表
|
|
|
|
|
|
### 工商公示股东
|
|
|
|
|
|
```sql
|
|
|
CREATE TABLE `tb_company_partner` (
|
|
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
|
|
|
`company_name_digest` char(32) NOT NULL COMMENT '主体唯一键',
|
|
|
`stock_name` varchar(255) NOT NULL COMMENT '股东名称',
|
|
|
`company_name` varchar(255) DEFAULT NULL COMMENT '企业名称',
|
|
|
`stock_type` varchar(30) DEFAULT NULL COMMENT '股东类型',
|
|
|
`is_personal` tinyint(4) DEFAULT NULL COMMENT '自然人/非自然人,1自然人,0机构,2非人非机构',
|
|
|
`stock_name_digest` char(32) DEFAULT NULL COMMENT '企业股东id',
|
|
|
`identify_type` varchar(50) DEFAULT NULL COMMENT '股东证件类型',
|
|
|
`identify_no` varchar(50) DEFAULT NULL COMMENT '股东证件号码',
|
|
|
`stock_capital` varchar(20) DEFAULT NULL COMMENT '应缴出资额',
|
|
|
`stock_capital_num` varchar(20) default null comment '应缴出资额值',
|
|
|
`stock_capital_unit` varchar(20) default null comment '应缴出资额单位',
|
|
|
`stock_realcapital` varchar(20) DEFAULT NULL COMMENT '实缴出资额',
|
|
|
`stock_realcapital_num` varchar(20) DEFAULT NULL COMMENT '实缴出资额值',
|
|
|
`stock_realcapital_unit` varchar(20) DEFAULT NULL COMMENT '实缴出资额单位',
|
|
|
`stock_proportion` double(7,6) DEFAULT NULL COMMENT '股权占比',
|
|
|
`invest_type` varchar(20) DEFAULT NULL COMMENT '应缴出资方式',
|
|
|
`invest_realtype` varchar(20) DEFAULT NULL COMMENT '实缴出资方式',
|
|
|
`country` varchar(20) default null comment '股东国别',
|
|
|
`inv_id` varchar(100) default null comment '总局股东出资id',
|
|
|
`include_date` date default null comment '股东进入日期',
|
|
|
`remove_date` date default null comment '股东退出日期',
|
|
|
`pays` text default null comment '认缴出资记录',
|
|
|
`realpays` text default null comment '实缴出资记录',
|
|
|
`use_flag` tinyint(4) DEFAULT '0' COMMENT '使用标记',
|
|
|
`is_history` tinyint(4) DEFAULT '0' COMMENT '状态(0: 有效, 1: 历史)',
|
|
|
`name_source` tinyint(4) default '0' comment '股东来源,0官网同步,1文本解析',
|
|
|
`capital_source` tinyint(4) default null comment '出资额及股比来源',
|
|
|
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '入库时间',
|
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
PRIMARY KEY (`id`),
|
|
|
UNIQUE KEY `idx_partner` (`company_name_digest`,`stock_name`),
|
|
|
KEY `idx_stock_name` (`stock_name`),
|
|
|
key `idx_stock_id` (`stock_name_digest`),
|
|
|
KEY `idx_update_time` (`update_time`)
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='股东信息';
|
|
|
```
|
|
|
|
|
|
### 最新公示股东表
|
|
|
|
|
|
```sql
|
|
|
create table tb_company_partner_latest (
|
|
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
|
|
|
`company_name_digest` char(32) NOT NULL COMMENT '主体唯一键',
|
|
|
`stock_name` varchar(255) NOT NULL COMMENT '股东名称',
|
|
|
`company_name` varchar(255) DEFAULT NULL COMMENT '企业名称',
|
|
|
`stock_type` varchar(30) DEFAULT NULL COMMENT '股东类型',
|
|
|
`is_personal` tinyint(4) DEFAULT NULL COMMENT '自然人/非自然人,1自然人,0机构,2非人非机构',
|
|
|
`stock_name_digest` char(32) DEFAULT NULL COMMENT '企业股东id',
|
|
|
`stock_capital` varchar(20) DEFAULT NULL COMMENT '应缴出资额',
|
|
|
`stock_capital_num` varchar(20) default null comment '应缴出资额值',
|
|
|
`stock_capital_unit` varchar(20) default null comment '应缴出资额单位',
|
|
|
`stock_realcapital` varchar(20) DEFAULT NULL COMMENT '实缴出资额',
|
|
|
`stock_realcapital_num` varchar(20) DEFAULT NULL COMMENT '实缴出资额值',
|
|
|
`stock_realcapital_unit` varchar(20) DEFAULT NULL COMMENT '实缴出资额单位',
|
|
|
`holder_num` varchar(20) default null comment '持股数',
|
|
|
`stock_proportion` double(7,6) DEFAULT NULL COMMENT '股权占比',
|
|
|
`invest_type` varchar(20) DEFAULT NULL COMMENT '应缴出资方式',
|
|
|
`invest_realtype` varchar(20) DEFAULT NULL COMMENT '实缴出资方式',
|
|
|
`pays` text default null comment '认缴出资记录',
|
|
|
`realpays` text default null comment '实缴出资记录',
|
|
|
`use_flag` tinyint(4) DEFAULT '0' COMMENT '使用标记',
|
|
|
`is_history` tinyint(4) DEFAULT '0' COMMENT '状态(0: 有效, 1: 历史)',
|
|
|
`capital_source` tinyint(4) default null comment '出资额及股比来源',
|
|
|
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '入库时间',
|
|
|
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
PRIMARY KEY (`id`),
|
|
|
UNIQUE KEY `idx_partner` (`company_name_digest`,`stock_name`),
|
|
|
KEY `idx_stock_name` (`stock_name`),
|
|
|
key `idx_stock_id` (`stock_name_digest`),
|
|
|
KEY `idx_update_time` (`update_time`)
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='股东信息';
|
|
|
```
|
|
|
|
|
|
## 主要人员表 |
|
|
\ No newline at end of file |