修改评级逻辑
This commit is contained in:
parent
05b348b2d9
commit
46280dc9f6
|
@ -34,7 +34,21 @@ def load_bj_model_dict():
|
|||
|
||||
|
||||
def company_rate_add(db: Session, data: schemas.CompanyRateAddInfo):
|
||||
file_info = FormFileCrud.file_get(db, data.file_md)
|
||||
item = CompanyRate(**data.dict())
|
||||
item.file_data_state = "未上传"
|
||||
item.rate_state = '未评级'
|
||||
item.publish_state = '未披露'
|
||||
db.add(item)
|
||||
db.commit()
|
||||
db.refresh(item)
|
||||
marge_data_to_db(db, item.id)
|
||||
db.refresh(item)
|
||||
return item
|
||||
|
||||
|
||||
def company_rate_file_data_load(db: Session, item_id, file_md):
|
||||
item = db.query(CompanyRate).filter(CompanyRate.id == item_id).first()
|
||||
file_info = FormFileCrud.file_get(db, file_md)
|
||||
wj_data = None
|
||||
try:
|
||||
file_path = file_info.file_url
|
||||
|
@ -43,16 +57,11 @@ def company_rate_add(db: Session, data: schemas.CompanyRateAddInfo):
|
|||
print_error(e)
|
||||
sys.stderr.write(str(e))
|
||||
raise HTTPException(detail='文件解析错误,请重新上传', status_code=301)
|
||||
item = CompanyRate(**data.dict())
|
||||
item.wj_data = wj_data
|
||||
item.man_data = deepcopy(wj_data)
|
||||
item.rate_state = '未评级'
|
||||
item.publish_state = '未披露'
|
||||
db.add(item)
|
||||
item.file_md = file_md
|
||||
item.file_data_state = "已就绪"
|
||||
db.commit()
|
||||
db.refresh(item)
|
||||
marge_data_to_db(db, item.id)
|
||||
db.refresh(item)
|
||||
return item
|
||||
|
||||
|
||||
|
@ -122,6 +131,7 @@ def load_api_data_to_db(db: Session, item_id):
|
|||
if item:
|
||||
item.api_data = json.dumps(load_api_data(item.company_name))
|
||||
marge_data_by_item(db, item)
|
||||
item.api_data_state="已就绪"
|
||||
db.commit()
|
||||
db.refresh(item)
|
||||
return item
|
||||
|
@ -147,15 +157,15 @@ def check_none_in_dict_recursive(dictionary):
|
|||
|
||||
|
||||
def marge_data_by_item(db: Session, item):
|
||||
wj_data = json_parse(item.wj_data)
|
||||
# wj_data = json_parse(item.wj_data)
|
||||
api_data = json_parse(item.api_data)
|
||||
man_data = json_parse(item.man_data)
|
||||
# man_data = json_parse(item.man_data)
|
||||
# mgr_data = {**bj_model_dict, **wj_data, **api_data, **{k: v for k, v in man_data.items() if v is not None}}
|
||||
# item.mgr_data = json.dumps(mgr_data)
|
||||
mgr_data_state = '已就绪'
|
||||
item.api_data_state = '未就绪' if check_none_in_dict_recursive(wj_data) else "已就绪"
|
||||
item.man_data_state = '未就绪' if check_none_in_dict_recursive(man_data) else "已就绪"
|
||||
item.mgr_data_state = "已就绪" if (item.api_data_state == '已就绪' and item.man_data_state == '已就绪') else "未就绪"
|
||||
item.api_data_state = '未就绪' if check_none_in_dict_recursive(api_data) else "已就绪"
|
||||
# item.man_data_state = '未就绪' if check_none_in_dict_recursive(man_data) else "已就绪"
|
||||
item.mgr_data_state = "已就绪" if (item.api_data_state == '已就绪' and item.file_data_state == '已就绪') else "未就绪"
|
||||
db.commit()
|
||||
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ def load_api_data(company_name):
|
|||
成立年限 = datetime.now().year - datetime.fromtimestamp(
|
||||
企业基本信息['estiblishTime'] / 1000).year if 企业基本信息 else 0
|
||||
|
||||
企业类型 = '有限责任公司' if '有限责任' in 企业基本信息['companyOrgType'].split("(")[0] else '股份制公司'
|
||||
企业类型 = '有限责任公司' if 企业基本信息 and '有限责任' in 企业基本信息['companyOrgType'].split("(")[0] else '股份制公司'
|
||||
|
||||
开庭公告_劳动争议 = len(
|
||||
[item["caseReason"] for item in filter_bg(司法风险['ktAnnouncementList'], company_name) if
|
||||
|
@ -95,3 +95,40 @@ def load_api_data(company_name):
|
|||
"严重违法": 严重违法数量
|
||||
}
|
||||
return data
|
||||
|
||||
|
||||
def load_report_need_data(company_name):
|
||||
工商信息, _ = tianyancha_api.get("工商信息", {"keyword": company_name})
|
||||
data = {
|
||||
"企业中文名称": company_name,
|
||||
"所属国民经济行业": 工商信息['industry'],
|
||||
"英文名称": 工商信息['property3'],
|
||||
"工商注册号": 工商信息['regNumber'],
|
||||
"组织机构代码": 工商信息['orgNumber'],
|
||||
"统一社会信用代码": 工商信息['creditCode'],
|
||||
"注册资本": 工商信息['regCapital'],
|
||||
"企业类型": 工商信息['companyOrgType'],
|
||||
"注册地址": 工商信息['regLocation'],
|
||||
"成立日期": 工商信息['estiblishTime'],
|
||||
"核准日期": 工商信息['approvedTime'],
|
||||
"营业期限终止日期": '',
|
||||
"法定代表人": 工商信息['punishList'][0]['legalPersonName'] if 工商信息['punishList'] else '',
|
||||
"经营地址": '',
|
||||
"邮政编码": 工商信息['reportList'][0]['postcode'] if 工商信息['reportList'] else '',
|
||||
"联系电话": 工商信息['reportList'][0]['phoneNumber'] if 工商信息['reportList'] else '',
|
||||
"传真号码": 工商信息['reportList'][0]['phoneNumber'] if 工商信息['reportList'] else '',
|
||||
"电子邮箱": 工商信息['reportList'][0]['email'] if 工商信息['reportList'] else '',
|
||||
"企业网址": '',
|
||||
"经营范围": 工商信息['businessScope'],
|
||||
"主要产品": '',
|
||||
"历史沿革": '',
|
||||
"股权结构": '',
|
||||
"高管构成": '',
|
||||
"企业资质": '',
|
||||
"企业商标": '',
|
||||
"企业专利": '',
|
||||
"企业软件著作权": '',
|
||||
"企业供应商": '',
|
||||
"企业招投标情况": ''
|
||||
}
|
||||
return data
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from context.common import common_db, CompanyUserTokenDataModel, company_user_auth_util
|
||||
from context.common import common_db, CompanyUserTokenDataModel, company_user_auth_util, auth_util
|
||||
from . import schemas
|
||||
from . import crud
|
||||
from utils.sqlalchemy_common_utils import QueryParams, query_common
|
||||
|
@ -19,6 +19,20 @@ def company_rate_add(req: schemas.CompanyRateAddReq, db: Session = Depends(commo
|
|||
return schemas.CompanyRateAddRes(**item.to_dict())
|
||||
|
||||
|
||||
@router.post("/company_rate/create", summary="创建公司评级", response_model=schemas.CompanyRateAddRes)
|
||||
def company_rate_add(req: schemas.CompanyRateAddReq, db: Session = Depends(common_db.get_db),
|
||||
token_data: auth_util.tokenDataModel = Depends(auth_util.token_data_depend)):
|
||||
item = crud.company_rate_add(db, req)
|
||||
return schemas.CompanyRateAddRes(**item.to_dict())
|
||||
|
||||
|
||||
@router.post("/company_rate/upload_file", summary="问卷数据上传")
|
||||
def company_rate_file_data_load(req: schemas.CompanyRateFileDataLoadReq, db: Session = Depends(common_db.get_db),
|
||||
token_data: auth_util.tokenDataModel = Depends(auth_util.token_data_depend)):
|
||||
item = crud.company_rate_file_data_load(db, req.id, req.file_md)
|
||||
return "成功"
|
||||
|
||||
|
||||
@router.post("/company_rate/delete", summary="删除公司评级数据")
|
||||
def company_rate_delete(req: schemas.CompanyRateDeleteReq, db: Session = Depends(common_db.get_db)):
|
||||
crud.company_rate_delete(db, req.id)
|
||||
|
|
|
@ -56,6 +56,11 @@ class CompanyRateAddReq(CompanyRateAddInfo):
|
|||
pass
|
||||
|
||||
|
||||
class CompanyRateFileDataLoadReq(BaseModel):
|
||||
id: int
|
||||
file_md: str
|
||||
|
||||
|
||||
class CompanyRateAddRes(CompanyRateInfo):
|
||||
pass
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ from fastapi import APIRouter, UploadFile, File, Depends, HTTPException, Header
|
|||
from sqlalchemy.orm import Session
|
||||
from . import crud
|
||||
from utils.common_utils import file_md5
|
||||
from context.common import common_db, company_user_auth_util, CompanyUserTokenDataModel
|
||||
from context.common import common_db, company_user_auth_util, CompanyUserTokenDataModel, auth_util
|
||||
from . import schemas
|
||||
from base64 import b64decode
|
||||
|
||||
|
@ -17,9 +17,9 @@ allow_file_type = {
|
|||
|
||||
@router.post('/license_file_upload', response_model=schemas.FormFileInfo, summary='营业执照文件上传')
|
||||
def license_file_upload(name: str = Header(None), file: UploadFile = File(...),
|
||||
db: Session = Depends(common_db.get_db)
|
||||
# token_data: CompanyUserTokenDataModel = Depends(company_user_auth_util.token_data_depend)
|
||||
):
|
||||
db: Session = Depends(common_db.get_db)
|
||||
# token_data: CompanyUserTokenDataModel = Depends(company_user_auth_util.token_data_depend)
|
||||
):
|
||||
if name:
|
||||
name = b64decode(name.encode('utf-8')).decode('utf-8')
|
||||
mime_type = file.content_type
|
||||
|
@ -48,9 +48,9 @@ def license_file_upload(name: str = Header(None), file: UploadFile = File(...),
|
|||
user_id = ""
|
||||
form_file = crud.add_file(db,
|
||||
schemas.FormFileCreate(md=file_md, file_name=name or file.filename,
|
||||
mime_type=mime_type,
|
||||
user_id=user_id, common_type=common_type,
|
||||
file_url=file_url))
|
||||
mime_type=mime_type,
|
||||
user_id=user_id, common_type=common_type,
|
||||
file_url=file_url))
|
||||
return form_file.to_dict()
|
||||
|
||||
|
||||
|
@ -89,9 +89,50 @@ def form_file_upload(name: str = Header(None), file: UploadFile = File(...),
|
|||
# user_id = ""
|
||||
form_file = crud.add_file(db,
|
||||
schemas.FormFileCreate(md=file_md, file_name=name or file.filename,
|
||||
mime_type=mime_type,
|
||||
user_id=user_id, common_type=common_type,
|
||||
file_url=file_url))
|
||||
mime_type=mime_type,
|
||||
user_id=user_id, common_type=common_type,
|
||||
file_url=file_url))
|
||||
return form_file.to_dict()
|
||||
|
||||
|
||||
@router.post('/form_file_upload_admin', response_model=schemas.FormFileInfo, summary='表单文件上传')
|
||||
def form_file_upload(name: str = Header(None), file: UploadFile = File(...),
|
||||
db: Session = Depends(common_db.get_db),
|
||||
token_data: auth_util.tokenDataModel = Depends(auth_util.token_data_depend)
|
||||
):
|
||||
if name:
|
||||
name = b64decode(name.encode('utf-8')).decode('utf-8')
|
||||
mime_type = file.content_type
|
||||
if mime_type != 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':
|
||||
raise Exception('不允许上传该类型文件')
|
||||
common_type, file_type = file.content_type.split('/')
|
||||
# if common_type not in allow_file_type:
|
||||
# raise Exception('不允许上传该类型文件')
|
||||
content_start = file.file.read(10240)
|
||||
file_md = file_md5(content_start)
|
||||
save_path = Path(f"static/upload_files/{common_type}/{file_type}")
|
||||
file_save_path = save_path / file_md
|
||||
file_url = f'/static/upload_files/{common_type}/{file_type}/{file_md}'
|
||||
if not os.path.exists(save_path):
|
||||
os.makedirs(save_path)
|
||||
form_file = crud.get_file_by_md(db, file_md)
|
||||
if not form_file:
|
||||
if not os.path.exists(file_save_path):
|
||||
with open(file_save_path, 'wb') as f:
|
||||
f.write(content_start)
|
||||
while True:
|
||||
content = file.file.read(10240)
|
||||
if content:
|
||||
f.write(content)
|
||||
else:
|
||||
break
|
||||
user_id = token_data.id
|
||||
# user_id = ""
|
||||
form_file = crud.add_file(db,
|
||||
schemas.FormFileCreate(md=file_md, file_name=name or file.filename,
|
||||
mime_type=mime_type,
|
||||
user_id=user_id, common_type=common_type,
|
||||
file_url=file_url))
|
||||
return form_file.to_dict()
|
||||
|
||||
|
||||
|
|
|
@ -13,3 +13,4 @@ jurigged~=0.5.5
|
|||
python-jose
|
||||
sqlalchemy_utils
|
||||
numpy~=1.25.2
|
||||
openpyxl
|
||||
|
|
|
@ -157,6 +157,10 @@ api_config = {
|
|||
"企业三要素": {
|
||||
"type": "dict",
|
||||
"url": "http://open.api.tianyancha.com/services/open/ic/verify/2.0"
|
||||
},
|
||||
"工商信息": {
|
||||
"type": "dict",
|
||||
"url": "http://open.api.tianyancha.com/services/open/cb/ic/2.0"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -47,9 +47,10 @@ def parse_file_data_interface(file_path):
|
|||
continue
|
||||
|
||||
return {
|
||||
"问卷数据": questionnaire_dict,
|
||||
"财报数据": financial_dict
|
||||
}
|
||||
"问卷数据": questionnaire_dict,
|
||||
"财报数据": financial_dict
|
||||
}
|
||||
|
||||
|
||||
def parse_file_data_interface2(file_path):
|
||||
file_data = {
|
||||
|
@ -110,7 +111,7 @@ def parse_file_data_interface2(file_path):
|
|||
},
|
||||
"财报数据": {
|
||||
"2021年末": {
|
||||
"数据是否经过审计":"是",
|
||||
"数据是否经过审计": "是",
|
||||
"财务数据": "2021年末",
|
||||
"资产负债表": None,
|
||||
"总资产": 6478468.9,
|
||||
|
@ -169,6 +170,29 @@ def bj_rate_interface(rate_data):
|
|||
return data
|
||||
|
||||
|
||||
def smebiz_create_flow(id):
|
||||
print(f"创建评级流程:{id}")
|
||||
return id
|
||||
res = rq.post('http://127.0.0.1:8010/api/model_management/new_process_file', json.dumps(
|
||||
{"pid": id, "model_name": "中小商业企业信用模型"}), timeout=8)
|
||||
|
||||
|
||||
def smebiz_post_wj_data(pid, data):
|
||||
res = rq.post('http://127.0.0.1:8010/api/model_management/upload_reference_data', json.dumps(
|
||||
{"pid": pid, "data": data}), timeout=8)
|
||||
print(res)
|
||||
|
||||
|
||||
def smebiz_rate_interface(pid):
|
||||
"""
|
||||
中小商业企业评级接口
|
||||
"""
|
||||
res = rq.post('http://127.0.0.1:8010/api/model_management/score_result', json.dumps(
|
||||
{"pid": pid}), timeout=8)
|
||||
data = res.json()
|
||||
return data
|
||||
|
||||
|
||||
def bj_finance_cal_interface(data):
|
||||
"""
|
||||
财报指标计算接口
|
||||
|
@ -177,4 +201,3 @@ def bj_finance_cal_interface(data):
|
|||
{"name": '保健服务业信誉评级模型', "index": data}), timeout=8)
|
||||
data = res.json()
|
||||
return data
|
||||
|
||||
|
|
Loading…
Reference in New Issue