197 lines
5.6 KiB
Python
197 lines
5.6 KiB
Python
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['宏观']['行业报告']
|
||
res = collection.update_one({"行业名称": industry}, {"$set": {"报告fid": fid, "上传日期": update_time}})
|
||
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):
|
||
"""
|
||
根据行业查询宏观报告
|
||
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
|
||
|
||
|
||
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
|
||
|
||
|
||
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:
|
||
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
|