2022-01-17 17:20:48 +08:00
|
|
|
|
import re
|
|
|
|
|
|
|
|
|
|
import pymongo
|
|
|
|
|
from bson import ObjectId
|
|
|
|
|
from gridfs import GridFS
|
|
|
|
|
|
|
|
|
|
client = pymongo.MongoClient('mongodb://{}:{}@{}:{}'.format('root', 'sromitdTW569kC#M', '116.63.130.34', 27018))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def find_macroscopic_report_data(industry):
|
|
|
|
|
"""
|
|
|
|
|
查询宏观报告数据
|
|
|
|
|
Parameters:
|
|
|
|
|
industry: 行业名称
|
|
|
|
|
Returns:
|
|
|
|
|
record: 报告数据
|
|
|
|
|
"""
|
|
|
|
|
collection = client['宏观']['行业报告']
|
|
|
|
|
data = collection.find({"行业名称": industry}, {'_id': False})
|
|
|
|
|
record = list(data)
|
|
|
|
|
return record
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def insert_macroscopic_report_data(insert_data):
|
|
|
|
|
"""
|
|
|
|
|
插入宏观报告数据
|
|
|
|
|
Parameters:
|
|
|
|
|
insert_data: 需要保存的数据
|
|
|
|
|
Returns:
|
|
|
|
|
result: 保存结果
|
|
|
|
|
"""
|
|
|
|
|
collection = client['宏观']['行业报告']
|
|
|
|
|
res = collection.insert_one(insert_data)
|
|
|
|
|
info = res.acknowledged
|
|
|
|
|
return info
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def update_macroscopic_report_data(industry, update_time, fid):
|
|
|
|
|
"""
|
|
|
|
|
更新宏观报告数据id
|
|
|
|
|
Parameters:
|
|
|
|
|
industry: 行业分类
|
|
|
|
|
update_time: 上传日期
|
|
|
|
|
fid: 文件id
|
|
|
|
|
Returns:
|
|
|
|
|
result: 更新结果
|
|
|
|
|
"""
|
|
|
|
|
collection = client['宏观']['行业报告']
|
2022-01-18 15:35:11 +08:00
|
|
|
|
res = collection.update_one({"行业名称": industry}, {"$set": {"报告fid": fid, "上传日期": update_time}})
|
2022-01-17 17:20:48 +08:00
|
|
|
|
info = res.raw_result['updatedExisting']
|
|
|
|
|
return info
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def upload_report(file_name, files):
|
|
|
|
|
"""
|
|
|
|
|
根据名称保存该企业报告
|
|
|
|
|
Parameters:
|
|
|
|
|
file_name: 文件名
|
|
|
|
|
files: pdf文件
|
|
|
|
|
Returns:
|
|
|
|
|
result: 保存结果
|
|
|
|
|
"""
|
|
|
|
|
try:
|
|
|
|
|
database = '宏观'
|
|
|
|
|
collection = '宏观报告PDF'
|
|
|
|
|
fs = GridFS(client[database], collection)
|
|
|
|
|
pdf_id = fs.put(data=files.read(), content_type='application/pdf', filename=file_name)
|
|
|
|
|
return str(pdf_id)
|
|
|
|
|
except Exception:
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def delete_macroscopic_pdf(fid):
|
|
|
|
|
"""
|
|
|
|
|
根据id删除宏观报告
|
|
|
|
|
Parameters:
|
|
|
|
|
fid: 评价ID
|
|
|
|
|
Returns:
|
|
|
|
|
record: 删除结果
|
|
|
|
|
"""
|
|
|
|
|
database = '模型'
|
|
|
|
|
collection = '宏观报告PDF'
|
|
|
|
|
fs = GridFS(client[database], collection)
|
|
|
|
|
fs.delete(ObjectId(fid))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def find_macroscopic_report_records(industry, time, skip, limit):
|
|
|
|
|
"""
|
2022-03-02 14:56:48 +08:00
|
|
|
|
根据行业查询宏观报告
|
2022-01-17 17:20:48 +08:00
|
|
|
|
Parameters:
|
|
|
|
|
industry: 行业名称
|
|
|
|
|
time: 上传日期
|
|
|
|
|
skip: 页码,默认从0开始
|
|
|
|
|
limit: 每页条数
|
|
|
|
|
Returns:
|
|
|
|
|
record: 查询结果
|
|
|
|
|
"""
|
|
|
|
|
collection = client['宏观']['行业报告']
|
|
|
|
|
skip = (skip - 1) * limit
|
|
|
|
|
# 参数都不为空
|
|
|
|
|
if industry and time:
|
|
|
|
|
find = {"行业名称": industry, "上传日期": re.compile(time)}
|
|
|
|
|
data = collection.find(find, {'_id': False}).skip(skip).limit(limit)
|
|
|
|
|
count = collection.find(find).count()
|
|
|
|
|
record = list(data)
|
|
|
|
|
result = {
|
|
|
|
|
"total": count,
|
|
|
|
|
"data": record
|
|
|
|
|
}
|
|
|
|
|
return result
|
|
|
|
|
elif len(industry) == 0 and time:
|
|
|
|
|
find = {"上传日期": re.compile(time)}
|
|
|
|
|
data = collection.find(find, {'_id': False}).skip(skip).limit(limit)
|
|
|
|
|
count = collection.find(find).count()
|
|
|
|
|
record = list(data)
|
|
|
|
|
result = {
|
|
|
|
|
"total": count,
|
|
|
|
|
"data": record
|
|
|
|
|
}
|
|
|
|
|
return result
|
|
|
|
|
elif len(time) == 0 and industry:
|
|
|
|
|
find = {"行业名称": industry}
|
|
|
|
|
data = collection.find(find, {'_id': False}).skip(skip).limit(limit)
|
|
|
|
|
count = collection.find(find).count()
|
|
|
|
|
record = list(data)
|
|
|
|
|
result = {
|
|
|
|
|
"total": count,
|
|
|
|
|
"data": record
|
|
|
|
|
}
|
|
|
|
|
return result
|
|
|
|
|
else:
|
|
|
|
|
data = collection.find({}, {'_id': False}).skip(skip).limit(limit)
|
|
|
|
|
count = collection.find().count()
|
|
|
|
|
record = list(data)
|
|
|
|
|
result = {
|
|
|
|
|
"total": count,
|
|
|
|
|
"data": record
|
|
|
|
|
}
|
|
|
|
|
return result
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def upload_industry_macroscopic_data(req):
|
|
|
|
|
"""
|
|
|
|
|
上传行业宏观数据
|
|
|
|
|
Parameters:
|
|
|
|
|
req: 上传的数据
|
|
|
|
|
Returns:
|
|
|
|
|
record: 上传结果
|
|
|
|
|
"""
|
|
|
|
|
collection = client['宏观']['行业数据']
|
|
|
|
|
find = {"一级行业": req['一级行业'], "二级行业": req['二级行业'], "统计时间": req['统计时间'], "统计字段名称": req['统计字段名称']}
|
|
|
|
|
res = collection.update_one(find, {"$set": req}, upsert=True)
|
|
|
|
|
if res.raw_result['n'] == 1:
|
|
|
|
|
return True
|
|
|
|
|
else:
|
|
|
|
|
return False
|
2022-01-17 23:26:53 +08:00
|
|
|
|
|
|
|
|
|
|
2022-01-18 15:35:11 +08:00
|
|
|
|
def upload_overview_macroscopic_data(req):
|
|
|
|
|
"""
|
|
|
|
|
上传总规模宏观数据
|
|
|
|
|
Parameters:
|
|
|
|
|
req: 上传的数据
|
|
|
|
|
Returns:
|
|
|
|
|
record: 上传结果
|
|
|
|
|
"""
|
|
|
|
|
collection = client['宏观']['总规模数据']
|
|
|
|
|
find = {"行业名称": req['行业名称'], "统计时间": req['统计时间'], "统计字段名称": req['统计字段名称']}
|
|
|
|
|
res = collection.update_one(find, {"$set": req}, upsert=True)
|
|
|
|
|
if res.raw_result['n'] == 1:
|
|
|
|
|
return True
|
|
|
|
|
else:
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
2022-01-17 23:26:53 +08:00
|
|
|
|
def update_industry_macroscopic_data(req):
|
|
|
|
|
collection = client['宏观']['行业数据']
|
|
|
|
|
find = {"一级行业": req['一级行业'], "二级行业": req['二级行业'], "统计时间": req['统计时间'], "统计字段名称": req['统计字段名称']}
|
|
|
|
|
res = collection.update_one(find, {"$set": req})
|
|
|
|
|
if res.raw_result['n'] == 1:
|
|
|
|
|
return True
|
|
|
|
|
else:
|
2022-01-19 10:47:23 +08:00
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def search_macroscopic_data(req, skip, limit):
|
|
|
|
|
collection = client['宏观']['行业数据']
|
|
|
|
|
skip = (skip - 1) * limit
|
|
|
|
|
data = collection.find(req, {'_id': False}).skip(skip).limit(limit)
|
|
|
|
|
count = collection.find(req).count()
|
|
|
|
|
record = list(data)
|
|
|
|
|
result = {
|
|
|
|
|
"total": count,
|
|
|
|
|
"data": record
|
|
|
|
|
}
|
|
|
|
|
return result
|