目前工商上线处理流程
目标处理流程
目前工商上线流程的问题
mongo的ic表、股东、主要人员表等没有唯一约束,导致有数据重复
多进程上线,新收录主体注册digest时冲突,导致主体重复
每天采集的大部分数据是没有变化的,但都会更新mongo,且不知道哪些字段有变化
由于mongo对同一个字段的类型没有统一约束,导致同一个字段有不同的数据类型
有些再加工字段,由于不能监控实际有变化的记录,而都放在上线程序中处理,导致上线程序做了太多事情
由于不知道实际有变化的数据信息,在更新对外输出表、联系方式表等时需要对采集的全部数据做处理,严重浪费资源
更新mongo时处理逻辑复杂,上线代码维护难度大
新的处理流程期望达到的效果
1、统一所有字段的数据类型
2、减少后续相关业务表要处理的数据量,即只处理实际数据发生变化的主体信息
3、减少数据重复
4、通过数据更新日志实现动态监控
5、解决上述目前流程的其他问题
待确定问题
1、水滴上需要知道哪些主体去采集更新了,也即最后采集时间,也即现在爬虫结果的lastupdatetime,新的流程中怎么处理该字段
2、注册digest时一个进程是否满足
采集任务提交
工商采集滚动更新任务索引字段
es: ic_spider_task
字段名 | 注释 | 字段类型 | 作用 |
---|---|---|---|
company_name_digest | 唯一键 | string | 唯一键 |
company_name | 名称 | string | |
company_code | 注册号 | string | |
credit_no | 统一信用代码 | string | |
ent_type | 主体类型标识(小类) | int | |
company_major_type | 主体类型标识(大类) | int | |
n_company_status | 主体状态 | string | |
province | 省份 | string | 有地方工商网站 |
city | 地市 | string | 有地方工商网站 |
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 | |
random_check_update_time | 双随机抽查检查更新时间 | datetime | |
qy_partner_update_time | 企业自主公示股东更新时间 | datetime | |
simple_cancel_update_time | 简易注销更新时间 | datetime | |
has_simple_cancel | 是否有简易注销 | int | |
cancel_notice_update_time | 注销备案公告更新时间 | datetime | |
has_cancel_notice | 是否有注销备案公告 | int |
ic_ods表结构
基本信息表
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='主体基本信息';
法人表
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='法定代表人表';
股东表
工商公示股东
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='股东信息';
最新公示股东表
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='股东信息';