From 055ca9bac692a1c424e3c3ccace22819628be51a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E6=A3=AE?= Date: Wed, 12 Jan 2022 17:18:08 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=8A=A5=E5=91=8A=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=88=A0=E9=99=A4=E7=94=9F=E6=88=90=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rating/Rating.py | 17 ++++++++++++- rating/db.py | 65 ++++++++++++++++++++++++++++++++++++++++++++++- rating/routes.py | 65 ++++++++++++++++++++++++++++++++++++++++++++++- rating/scripts.py | 59 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 203 insertions(+), 3 deletions(-) diff --git a/rating/Rating.py b/rating/Rating.py index 381f687..9311b57 100644 --- a/rating/Rating.py +++ b/rating/Rating.py @@ -60,4 +60,19 @@ class Rating: result: 编辑结果 """ result = report_edit_script(self.rid, text_model) - return result \ No newline at end of file + return result + + def report_delete(self): + result = report_delete_script(self.rid) + return result + + def report_create(self): + """ + 报告生成 + Parameters: + - + Returns: + result: 生成结果 + """ + result = report_create_script(self.rid) + return result diff --git a/rating/db.py b/rating/db.py index 161f645..149228a 100644 --- a/rating/db.py +++ b/rating/db.py @@ -1,6 +1,7 @@ import re import pymongo +from gridfs import GridFS client = pymongo.MongoClient('mongodb://{}:{}@{}:{}'.format('root', 'sromitdTW569kC#M', '116.63.130.34', 27018)) @@ -53,6 +54,50 @@ def find_fill_details_records(rid): return record +def find_evaluation_records(rid): + """ + 查询评价记录 + Parameters: + rid: 评价ID + Returns: + record: 查询结果 + """ + collection = client['评价']['评价记录'] + data = collection.find({"评价ID": rid}, {'_id': False}) + record = list(data) + return record + + +def update_evaluation_records(rid, data): + """ + 更新评价数据 + Parameters: + rid: 评价ID + data: 报告fid对象 + Returns: + record: 更新结果 + """ + collection = client['评价']['评价记录'] + res = collection.update_one({"评价ID": rid}, {"$set": data}) + info = res.raw_result['updatedExisting'] + return info + + +def delete_report_pdf(fid): + """ + 更新评价数据 + Parameters: + fid: 评价ID + Returns: + record: 删除结果 + """ + database = '评价' + collection = '综合信用报告' + fs = GridFS(client[database], collection) + fs.delete(file_id=fid) + return True + + def find_risk_info_records(rid): """ 查询风险数据信息 @@ -79,4 +124,22 @@ def update_report_data(rid, data): collection = client['评价']['报告数据'] res = collection.update_one({"评价ID": rid}, {"$set": data}) info = res.raw_result['updatedExisting'] - return info \ No newline at end of file + return info + + +def find_report_data(rid): + """ + 查询报告数据 + Parameters: + rid: 评价ID + Returns: + record: 报告数据 + """ + collection = client['评价']['报告数据'] + data = collection.find({"评价ID": rid}, {'_id': False}) + record = list(data) + return record + + +if __name__ == '__main__': + delete_report_pdf('61de994660a518e91fbd0192') \ No newline at end of file diff --git a/rating/routes.py b/rating/routes.py index 9c2d170..68c610f 100644 --- a/rating/routes.py +++ b/rating/routes.py @@ -109,4 +109,67 @@ def report_edit(): except KeyError: return {"info": "键值错误"}, 400 except TypeError: - return {"info": "参数错误"}, 400 \ No newline at end of file + return {"info": "参数错误"}, 400 + + +@rating_route.route('/report_create', methods=['POST']) +@api_secret +def report_create(): + """ + 生成报告 + Parameters: + - + Returns: + info: 生成结果 + """ + try: + rating = Rating() + rating.rid = request.json['rid'] + result = rating.report_create() + return result.json() + except KeyError: + return {"info": "键值错误"}, 400 + except TypeError: + return {"info": "参数错误"}, 400 + + +@rating_route.route('/report_edit_save_delete', methods=['POST']) +@api_secret +def report_edit_save_delete(): + """ + 报告编辑、保存、删除操作 + Parameters: + - + Returns: + info: 生成结果 + """ + try: + def edit(): + info = rating.report_edit(text_model) + return info + + def delete(): + info = rating.report_delete() + return info + + def create(): + info = rating.report_create() + return info.json() + + rating = Rating() + rating.rid = request.json['rid'] + text_model = request.json['text_model'] + step_01 = edit() + if step_01: + step_02 = delete() + if step_02: + step_03 = create() + return step_03 + else: + return {"info": "删除失败"} + else: + return {"info": "编辑失败"} + except KeyError: + return {"info": "键值错误"}, 400 + except TypeError: + return {"info": "参数错误"}, 400 diff --git a/rating/scripts.py b/rating/scripts.py index c2ca21b..8cbbd70 100644 --- a/rating/scripts.py +++ b/rating/scripts.py @@ -1,3 +1,7 @@ +import json + +import requests + from rating.db import * @@ -62,3 +66,58 @@ def report_edit_script(rid, text_model): insert_data['报告内容'] = text_model result = update_report_data(rid, insert_data) return result + + +def report_delete_script(rid): + """ + 根据rid删除报告相关数据数据 + Parameters: + rid: 评价ID + Returns: + result: 删除结果 + """ + data = find_evaluation_records(rid) + # 判断是否存在这条评价记录 + if len(data) == 0: + return False + else: + eval_data = data[0] + if eval_data['报告fid']: + fid = eval_data['报告fid'] + res = delete_report_pdf(fid) + if res: + r = update_evaluation_records(rid, {"报告fid": None}) + return r + else: + return res + + +def report_create_script(rid): + """ + 根据rid查询报告数据并生成PDF报告 + Parameters: + rid: 评价ID + Returns: + result: 生成结果 + """ + text_model = dict() + text_model['text_model'] = find_report_data(rid)[0] + + def generate_report(text_data): + """ + 调用报告生成接口 + Parameters: + text_data: 报告数据 + Returns: + result: type 生成结果 + """ + url = 'http://139.9.249.34:51012/tfse_rating/report/generate_pdf_report' + token = 'X0gSlC!YE8jmr2jJr&ilcjS83j!tsoh5' + headers = {'token': token, 'Content-Type': 'application/json;charset=UTF-8'} + res = requests.post(url, headers=headers, data=json.dumps(text_data)) + return res + + result = generate_report(text_model) + if result['info'] == '生成报告成功': + update_evaluation_records(rid, {"报告fid": result['result']['FileID']}) + return result