Merge branch 'pp' into 'main'
changes 结果确认接口 See merge request pengsen/rating_process!9
This commit is contained in:
commit
a8517b0025
|
@ -412,12 +412,12 @@ def func(rating_flow_id: str, db: Session = Depends(get_db), mongodb: MongoHelpe
|
|||
|
||||
bacp_body.update({"bacp_score": total_score})
|
||||
|
||||
bacp_body.update({"bacp_level": "C"})
|
||||
for symbol in rank_standards:
|
||||
if total_score > rank_standards.get(symbol):
|
||||
rank_level = symbol
|
||||
bacp_body.update({"bacp_level": rank_level})
|
||||
else:
|
||||
bacp_body.update({"bacp_level": "C"})
|
||||
break
|
||||
|
||||
# 保存流程节点数据
|
||||
Crud.save_rating_flow_node(db=db, mongodb=mongodb, node_id=nodes_item.get("基本信用状况"), data=bacp_body.copy())
|
||||
|
@ -444,12 +444,69 @@ def func(rating_flow_id: str, db: Session = Depends(get_db)):
|
|||
adjust_data = rank_table.get('评级调整')
|
||||
if not adjust_data:
|
||||
raise HTTPException(status_code=404, detail="Rating Adjustment Data Not Found")
|
||||
return adjust_data
|
||||
adjustment = list()
|
||||
for item in adjust_data:
|
||||
insert = dict()
|
||||
insert['调整因素'] = item.get('title')
|
||||
insert['调整因素介绍'] = item.get('describe')
|
||||
insert['调整分数'] = None
|
||||
insert['调整说明'] = None
|
||||
adjustment.append(insert)
|
||||
|
||||
return adjustment
|
||||
|
||||
|
||||
@router.post("/import/calculation_adjust", summary="计算调整因素得分", tags=["评级节点"])
|
||||
def func(schema: RatingFlowSchema.CalculationAdjustReqBody, db: Session = Depends(get_db),
|
||||
mongodb: MongoHelper = Depends(get_mongodb)):
|
||||
# 获取流程; rf_item: 流程对象
|
||||
rf_item = Crud.get_rating_flow(db=db, rating_flow_id=schema.rating_flow_id)
|
||||
if not rf_item:
|
||||
raise HTTPException(status_code=404, detail="RatingFlow Not Found")
|
||||
# 计算得分
|
||||
score = sum([item.get('调整分数') for item in schema.adjustment])
|
||||
# 获取上个节点的得分
|
||||
nodes_item = [node for node in rf_item.nodes if node.node_name == '基本信用状况']
|
||||
if not nodes_item:
|
||||
raise HTTPException(status_code=404, detail="RatingNode Not Found")
|
||||
bacp_body = get_rating_node_data(db=db, mongodb=mongodb, _id=nodes_item[0].id)
|
||||
bacp_score = bacp_body.get('bacp_score')
|
||||
ascp_score = round((bacp_score + score), 2)
|
||||
# 获取打分卡; res_scorecard: 打分卡
|
||||
scorecard = request_to_get(
|
||||
url='http://test.fecribd.com/api/model_store/scorecard/view?_id={}'.format(rf_item.scorecard_id)
|
||||
)
|
||||
if not scorecard:
|
||||
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
|
||||
rank_table = scorecard.get("rank_table")
|
||||
if not rank_table:
|
||||
raise HTTPException(status_code=404, detail="RankTable Not Found")
|
||||
rank_standards = dict(sorted(rank_table.get("得分级别标准").items(), key=lambda kv: (kv[1], kv[0]), reverse=True))
|
||||
rank_level = 'C'
|
||||
for symbol in rank_standards:
|
||||
if ascp_score > rank_standards.get(symbol):
|
||||
rank_level = symbol
|
||||
break
|
||||
|
||||
adjustment_data = {
|
||||
"ascp_score": ascp_score,
|
||||
"ascp_level": rank_level,
|
||||
"adjustments": schema.adjustment,
|
||||
}
|
||||
|
||||
# 保存流程节点数据
|
||||
node_item = [node for node in rf_item.nodes if node.node_name == '个体信用状况']
|
||||
if not node_item:
|
||||
raise HTTPException(status_code=404, detail="RatingNode Not Found")
|
||||
node = node_item[0]
|
||||
Crud.save_rating_flow_node(db=db, mongodb=mongodb, node_id=node.id, data=adjustment_data.copy())
|
||||
|
||||
return adjustment_data
|
||||
|
||||
|
||||
@router.get("/import/external_support", summary="导入外部支持", tags=["评级节点"])
|
||||
def func(province: str, region: str, db: Session = Depends(get_db)):
|
||||
return {"result": "AAA"}
|
||||
return {"外部支持级别": "AAA", "最终调整级别": None, "调整说明": None}
|
||||
|
||||
|
||||
@router.get("/result/confirm", summary="结果确认", tags=["评级节点"])
|
||||
|
@ -462,4 +519,3 @@ def func(rating_flow_id: str, operation: str, db: Session = Depends(get_db)):
|
|||
return Crud.edit_rating_status(db, rating_flow_id, status=operation)
|
||||
else:
|
||||
return {"info": "评级已确认无法执行操作"}
|
||||
|
||||
|
|
|
@ -72,3 +72,8 @@ class ListRatingFlowsReqBody(BaseModel):
|
|||
|
||||
class GetRatingFlowNodeContentReqBody(BaseModel):
|
||||
node_id: str = None
|
||||
|
||||
|
||||
class CalculationAdjustReqBody(BaseModel):
|
||||
rating_flow_id: str
|
||||
adjustment: list
|
||||
|
|
Loading…
Reference in New Issue