Merge branch 'master' into 'ps'
# Conflicts: # rating/scripts.py
This commit is contained in:
commit
aa77be7c74
12
app.py
12
app.py
|
@ -1,11 +1,15 @@
|
|||
from flask import Flask
|
||||
from flask_cors import *
|
||||
|
||||
from company.routes import company_route
|
||||
from rating.routes import rating_route
|
||||
|
||||
app = Flask(__name__)
|
||||
CORS(app, supports_credentials=True)
|
||||
app.config['JSON_SORT_KEYS'] = False
|
||||
|
||||
|
||||
@app.route('/')
|
||||
def hello_world():
|
||||
return 'Hello World!'
|
||||
app.register_blueprint(company_route, url_prefix='/etl_tfse/company')
|
||||
app.register_blueprint(rating_route, url_prefix='/etl_tfse/rating')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -1,8 +1,38 @@
|
|||
import os
|
||||
import json
|
||||
import functools
|
||||
|
||||
from flask import request
|
||||
|
||||
from setting import API_SECRET
|
||||
from setting import API_SECRET, APP_NAME
|
||||
|
||||
|
||||
def file_path(param):
|
||||
"""
|
||||
返回文件真实路径
|
||||
避免因为文件路径问题带来的麻烦
|
||||
Parameters:
|
||||
param: 文件相对路径
|
||||
Returns:
|
||||
path: 文件真实路径
|
||||
"""
|
||||
abs_path = os.path.abspath(os.path.dirname(__file__))
|
||||
rel_path = abs_path[:abs_path.find(APP_NAME) + len(APP_NAME)]
|
||||
path = os.path.abspath(rel_path + param)
|
||||
return path
|
||||
|
||||
|
||||
def read_json_file(param):
|
||||
"""
|
||||
读取json文件
|
||||
Parameters:
|
||||
param: json文件真实路径
|
||||
Returns:
|
||||
result: json内容
|
||||
"""
|
||||
with open(param, "r", encoding='utf-8') as f:
|
||||
result = json.load(f)
|
||||
return result
|
||||
|
||||
|
||||
def verify_token(func):
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
import pymongo
|
||||
|
||||
client_tfse = pymongo.MongoClient('mongodb://{}:{}@{}:{}'.format('root', 'sromitdTW569kC#M', '116.63.130.34', 27018))
|
||||
client_tyc = pymongo.MongoClient('mongodb://{}:{}@{}:{}'.format('root', 'gP%40DwMSVd5Sh6EiH', '116.63.130.34', 27019))
|
||||
|
||||
|
||||
def find_data_in_tyc(param1, param2, param3):
|
||||
"""
|
||||
根据企业ID查询企业信息
|
||||
Parameters:
|
||||
param1: string 数据库 db
|
||||
param2: string 数据集 collection
|
||||
param3: dict 查询条件 例如 {"企业名称": "xxx有限公司"}
|
||||
Returns:
|
||||
record: 查询结果
|
||||
"""
|
||||
collection = client_tyc[param1][param2]
|
||||
data = collection.find(param3, {'_id': False})
|
||||
record = list(data)
|
||||
return record
|
||||
|
||||
|
||||
def insert_data_to_tfse(param1, param2, param3):
|
||||
"""
|
||||
插入数据
|
||||
Parameters:
|
||||
param1: string 数据库
|
||||
param2: string 数据集
|
||||
param3: dict 数据
|
||||
Returns:
|
||||
-
|
||||
"""
|
||||
collection = client_tfse[param1][param2]
|
||||
collection.insert_one(param3)
|
||||
|
|
@ -6,15 +6,27 @@ from company.scripts import *
|
|||
company_route = Blueprint('company', __name__)
|
||||
|
||||
|
||||
@company_route.route('/basic_info', methods=['POST'])
|
||||
@company_route.route('/init_company_data', methods=['POST'])
|
||||
@verify_token
|
||||
def basic_info():
|
||||
"""
|
||||
基础信息清晰
|
||||
初始化企业数据
|
||||
包括 天眼查数据库、企业基本信息
|
||||
Parameters:
|
||||
cid 企业ID
|
||||
company_name 企业名称
|
||||
Returns:
|
||||
res: desc
|
||||
"""
|
||||
company_name = request.json['company_name']
|
||||
basic_info_etl(company_name)
|
||||
cid = json.loads(request.data)['cid']
|
||||
company_name = json.loads(request.data)['company_name']
|
||||
|
||||
# 拉取企业数据
|
||||
info1 = drag_company_data_request(company_name)
|
||||
if info1 != "企业数据拉取成功":
|
||||
return {"info": "数据拉取失败"}, 210
|
||||
|
||||
# 清洗基本信息数据
|
||||
basic_info_etl(cid, company_name)
|
||||
|
||||
return {"info": "企业基本信息初始化成功"}
|
||||
|
|
|
@ -1,9 +1,97 @@
|
|||
def basic_info_etl(param):
|
||||
import json
|
||||
import time
|
||||
import requests
|
||||
|
||||
from common.scripts import file_path, read_json_file
|
||||
from company.db import find_data_in_tyc, insert_data_to_tfse
|
||||
|
||||
|
||||
def drag_company_data_request(company_name):
|
||||
"""
|
||||
从天眼查接口获取企业数据
|
||||
Parameters:
|
||||
company_name: 企业名称
|
||||
Returns:
|
||||
-
|
||||
"""
|
||||
url = "http://139.9.249.34:51009/api/tyc/drag_data"
|
||||
headers = {'token': "uzdq51N4!I0%HY4sCaQ!aeCSIDIVIdAM"}
|
||||
data = {"企业名称": company_name}
|
||||
res = requests.post(url=url, headers=headers, data=json.dumps(data))
|
||||
if res.status_code == 200:
|
||||
return "企业数据拉取成功"
|
||||
else:
|
||||
return "企业数据拉取失败"
|
||||
|
||||
|
||||
def basic_info_etl(cid, company_name):
|
||||
"""
|
||||
根据企业名称,查询天眼查数据库
|
||||
将数据按规定格式存储到股交企业数据库中
|
||||
Parameters:
|
||||
param: desc
|
||||
cid: 企业ID
|
||||
company_name: 企业名称
|
||||
Returns:
|
||||
res: desc
|
||||
"""
|
||||
-
|
||||
"""
|
||||
data = read_json_file(file_path('/company/template/基本信息.json'))
|
||||
basic_info = find_data_in_tyc('公司背景', '基本信息', {"企业名称": company_name})
|
||||
holder_info = find_data_in_tyc('公司背景', '企业股东', {"企业名称": company_name})
|
||||
member_info = find_data_in_tyc('公司背景', '主要人员', {"企业名称": company_name})
|
||||
|
||||
data['企业ID'] = cid
|
||||
data['更新日期'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
|
||||
data['企业名称'] = basic_info[0]['企业名称']
|
||||
data['工商信息']['企业状态'] = basic_info[0]['基本信息']['regStatus']
|
||||
data['工商信息']['法定代表人'] = basic_info[0]['基本信息']['legalPersonName']
|
||||
data['工商信息']['企业类型'] = basic_info[0]['基本信息']['companyOrgType']
|
||||
data['工商信息']['纳税人识别号'] = basic_info[0]['基本信息']['taxNumber']
|
||||
data['工商信息']['经营范围'] = basic_info[0]['基本信息']['businessScope']
|
||||
data['工商信息']['注册资本'] = basic_info[0]['基本信息']['regCapital']
|
||||
data['工商信息']['实缴资本'] = basic_info[0]['基本信息']['actualCapital']
|
||||
data['工商信息']['注册地址'] = basic_info[0]['基本信息']['regLocation']
|
||||
data['工商信息']['登记机关'] = basic_info[0]['基本信息']['regInstitute']
|
||||
data['工商信息']['行业'] = basic_info[0]['基本信息']['industry']
|
||||
data['工商信息']['人员规模'] = basic_info[0]['基本信息']['staffNumRange']
|
||||
data['工商信息']['参保人数'] = basic_info[0]['基本信息']['socialStaffNum']
|
||||
data['工商信息']['小微企业'] = "是" if basic_info[0]['基本信息']['regStatus'] == 1 else "否"
|
||||
|
||||
data['股东信息'] = []
|
||||
for holder in holder_info[0]['企业股东']['result']:
|
||||
info = dict()
|
||||
info['股东'] = holder['name']
|
||||
info['股东类型'] = "公司" if holder['type'] == 1 else ("个人" if holder['type'] == 2 else "其他")
|
||||
|
||||
if holder['capital']:
|
||||
info['持股比例'] = None if holder['capital'][0]['percent'] == '' else holder['capital'][0]['percent']
|
||||
info['认缴金额'] = None if holder['capital'][0]['amomon'] == '' else holder['capital'][0]['amomon']
|
||||
info['认缴日期'] = None if holder['capital'][0]['time'] == '' else holder['capital'][0]['time']
|
||||
else:
|
||||
info['持股比例'] = None
|
||||
info['认缴金额'] = None
|
||||
info['认缴日期'] = None
|
||||
|
||||
if holder['capitalActl']:
|
||||
info['实缴金额'] = []
|
||||
info['实缴方式'] = []
|
||||
info['实缴时间'] = []
|
||||
for capital_actl in holder['capitalActl']:
|
||||
info['实缴金额'].append(capital_actl['amomon'])
|
||||
info['实缴方式'].append(capital_actl['paymet'])
|
||||
info['实缴时间'].append(capital_actl['time'])
|
||||
else:
|
||||
info['实缴金额'] = []
|
||||
info['实缴方式'] = []
|
||||
info['实缴时间'] = []
|
||||
|
||||
data['股东信息'].append(info)
|
||||
|
||||
data['主要成员'] = []
|
||||
for member in member_info[0]['主要人员']['result']:
|
||||
info = dict()
|
||||
info['姓名'] = member['name']
|
||||
info['职务'] = member['typeJoin']
|
||||
|
||||
data['主要成员'].append(info)
|
||||
|
||||
insert_data_to_tfse('企业', '公司基本信息', data)
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"企业ID": null,
|
||||
"企业名称": null,
|
||||
"更新日期": null,
|
||||
"工商信息": {
|
||||
"企业状态": null,
|
||||
"法定代表人": null,
|
||||
"企业类型": null,
|
||||
"纳税人识别号": null,
|
||||
"经营范围": null,
|
||||
"注册资本": null,
|
||||
"实缴资本": null,
|
||||
"注册地址": null,
|
||||
"登记机关": null,
|
||||
"行业": null,
|
||||
"人员规模": null,
|
||||
"参保人数": null,
|
||||
"小微企业": null
|
||||
},
|
||||
"股东信息": {
|
||||
"股东": null,
|
||||
"股东类型": null,
|
||||
"持股比例": null,
|
||||
"认缴金额": null,
|
||||
"认缴日期": null,
|
||||
"实缴金额": null,
|
||||
"实缴方式": null,
|
||||
"实缴日期": null
|
||||
},
|
||||
"主要成员": {
|
||||
"姓名": null,
|
||||
"职位": null
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue