Merge branch 'master' into 'ps'

# Conflicts:
#   rating/scripts.py
This commit is contained in:
王思川 2021-12-16 02:55:10 +00:00
commit aa77be7c74
7 changed files with 216 additions and 13 deletions

12
app.py
View File

@ -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__':

View File

@ -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):

View File

@ -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)

View File

@ -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": "企业基本信息初始化成功"}

View File

@ -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)

View File

@ -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
}
}