This commit is contained in:
王思川 2022-06-16 15:07:38 +08:00
parent a5fc76d081
commit 7c848f3edf
4 changed files with 172 additions and 14 deletions

View File

@ -1,7 +1,8 @@
from DBHelper.MongoHelperInstance import DB_GUA
from Modules.Common.CommonUtils import CommonUtils
from Modules.Company.CompanyObject import GuaranteeInfo
from Utils.CommonUtil import trans_fields_name, sub_dict, get_attr
from Utils.CommonUtil import trans_fields_name, sub_dict, get_attr, make_multistage_update_body
from Utils.ErrorUtil import APIReturnError
class CompanyManageImpl(object):
@ -80,7 +81,7 @@ class CompanyManageImpl(object):
return result
@staticmethod
def financial_data(**kwargs):
def get_financial_data(**kwargs):
items = DB_GUA.find_all_data(
"企业数据",
@ -122,7 +123,28 @@ class CompanyManageImpl(object):
return result
@staticmethod
def guarantee_info(**kwargs):
def edit_financial_data(**kwargs):
cid = kwargs['cid']
report_date = kwargs['report_date']
update_data = kwargs['update_data']
update_body = make_multistage_update_body(update_data)
if update_body is None:
raise APIReturnError("输入格式错误", 202)
if type(list(update_body.values())[0]) not in [float, type(None)]:
raise APIReturnError("输入格式错误", 202)
DB_GUA.update_single_data(
"企业数据",
"财务数据",
{"企业ID": cid, "报告期": report_date},
update_body
)
@staticmethod
def get_guarantee_info(**kwargs):
items = DB_GUA.find_all_data(
"企业数据",

View File

@ -137,21 +137,27 @@ def basic_data_route(**kwargs):
return {"info": e.__str__()}, e.status_code
@company_route.route('/financial_data', methods=['GET'])
@company_route.route('/financial_data', methods=['GET', 'POST'])
@verify_token
def financial_data_route(**kwargs):
"""财务数据"""
try:
RouteParamsCheck(request.args, ["cid"]).required()
cid = request.args["cid"]
impl = CompanyManageImpl()
result = impl.financial_data(cid=cid)
return {"info": "财务数据", "result": result}, 200
if request.method == 'GET':
RouteParamsCheck(request.args, ["cid"]).required()
cid = request.args["cid"]
impl = CompanyManageImpl()
result = impl.get_financial_data(cid=cid)
return {"info": "财务数据", "result": result}, 200
if request.method == 'POST':
RouteParamsCheck(request.args, ["cid", "report_date"]).required()
RouteParamsCheck(request.json, ["update_data"]).required()
cid = request.args["cid"]
report_date = request.args["report_date"]
update_data = request.json["update_data"]
impl = CompanyManageImpl()
impl.edit_financial_data(cid=cid, report_date=report_date, update_data=update_data)
return {"info": "财务数据", "result": "修改成功"}, 200
except APIReturnError as e:
return {"info": e.__str__()}, e.status_code
@ -168,7 +174,7 @@ def guarantee_info_route(**kwargs):
RouteParamsCheck(request.args, ["cid"]).required()
cid = request.args["cid"]
impl = CompanyManageImpl()
result = impl.guarantee_info(cid=cid)
result = impl.get_guarantee_info(cid=cid)
return {"info": "担保信息", "result": result}, 200
if request.method == "POST":

View File

@ -1,9 +1,25 @@
import time
from DBHelper.MongoHelperInstance import DB_GUA
from Modules.Reports.ReportDataObj import ReportDataObj, Chapter, Section, Content
from Utils.CommonUtil import get_yaml
class Paragraph(object):
@staticmethod
def p_rank_result_1(**kwargs):
credit_rank = DB_GUA.find_single_column(
"评级数据",
"得分级别",
{"评级ID": kwargs["rid"]},
"信用级别"
)
tempo = kwargs["tempo"]
tempo = tempo.format(get_credit_rank=credit_rank)
return tempo
class ReportDataModel(object):
# 工商信息 business_data_source
@ -22,6 +38,69 @@ class ReportDataModel(object):
# 报告模板
tempo = get_yaml(file_rel_path='/Reports/static/report_template.yaml')
def make_report_data(self, **kwargs):
report_data = ReportDataObj()
report_data.cid = kwargs['cid']
report_data.rid = kwargs['rid']
report_data.name = kwargs['name']
report_data.year = kwargs['year']
report_data.industry = kwargs['industry']
report_data.title = kwargs['title']
report_data.generate_date = time.strftime("%Y-%m-%d", time.localtime())
report_data.content = list()
chapter_titles = list(self.tempo.keys())
for chapter_title in chapter_titles:
chapter = Chapter()
chapter.title = chapter_title
chapter.content = list()
for section_title in self.tempo[chapter_title]:
section = Section()
section.title = section_title
section.content = list()
for content_item in self.tempo[chapter_title][section_title]:
content_type = list(content_item.keys()).__getitem__(0)
if content_type == '段落':
content = Content()
p_func = content_item['段落']['方法']
p_tempo = content_item['段落']['模板']
section.content.append(content)
elif content_type == '表格':
if content_item['表格'].__contains__('表头'):
content = Content()
content.table_name = content_item['表格']['表头']
section.content.append(content)
if content_item['表格'].__contains__('示例'):
content = Content()
content.table_data = content_item['表格']['示例']
section.content.append(content)
if content_item['表格'].__contains__('注释'):
content = Content()
content.comment = content_item['表格']['注释']
section.content.append(content)
chapter.content.append(section)
report_data.content.append(chapter)
return report_data.fields_toggle(fields=["content"])
def mock_report_data(self, **kwargs):
report_data = ReportDataObj()
@ -82,4 +161,15 @@ class ReportDataModel(object):
report_data.content.append(chapter)
DB_GUA.upsert_single_data(
"评级数据",
"报告数据",
{"评级ID": report_data.rid},
report_data.fields_toggle()
)
return report_data.fields_toggle(fields=["content"])
# if __name__ == '__main__':
# print(eval('Paragraph.p_rank_result_1')(rid="ZZO2qV0Q", tempo='主体信用评价等级: {get_credit_rank}'))

View File

@ -71,3 +71,43 @@ def get_yaml(**kwargs):
file_abs_path = os.path.abspath(abs_path_root + '/Modules/' + file_rel_path)
doc_yaml = open(file_abs_path, 'r', encoding="utf-8").read()
return yaml.full_load(doc_yaml)
def make_multistage_update_body(input_dict):
def get_dict_keys(_dict_):
if isinstance(_dict_, dict):
for key in _dict_.keys():
if isinstance(_dict_[key], dict):
get_dict_keys(_dict_[key])
update_keys.append(key)
return update_keys
def get_dict_value(data, keys):
keys_list = keys.split('.')
if isinstance(data, dict):
for key in keys_list:
values = data.get(key)
data = values
return data
try:
update_key = ''
update_keys = []
get_dict_keys(input_dict)
update_keys.reverse()
floor = len(update_keys)
for i in range(floor):
if i == floor - 1:
update_key = update_key + update_keys[i]
else:
update_key = update_key + update_keys[i] + '.'
update_value = get_dict_value(input_dict, update_key)
return {update_key: update_value}
except Exception:
return None