diff --git a/App/Crud/RatingFlowCrud.py b/App/Crud/RatingFlowCrud.py index 70fcb8f..b358004 100644 --- a/App/Crud/RatingFlowCrud.py +++ b/App/Crud/RatingFlowCrud.py @@ -75,7 +75,7 @@ def save_rating_flow_node(node_id: str, data: dict, db: Session, mongodb: MongoH # 保存新节点数据 obj_id = mongodb.insert_data(dbname="打分评级流程", sheet=node_item.node_name, data=data) - update_data = {"obj_id": obj_id, "status": True} + update_data = {"obj_id": obj_id} db.query(RatingFlowNode).filter_by(id=node_id).update(update_data) db.commit() diff --git a/App/Crud/RatingFlowNodeCrud.py b/App/Crud/RatingFlowNodeCrud.py index a85656e..2586c3a 100644 --- a/App/Crud/RatingFlowNodeCrud.py +++ b/App/Crud/RatingFlowNodeCrud.py @@ -8,3 +8,14 @@ def get_rating_node_data(_id: str, db: Session, mongodb: MongoHelper): item = db.query(RatingFlowNode).filter_by(id=_id).first() content = mongodb.find_data_by_id(dbname="打分评级流程", sheet=item.node_name, _id=item.obj_id) return content + + +def delete_rating_node_data(_id: str, db: Session, mongodb: MongoHelper): + node_item = db.query(RatingFlowNode).filter_by(id=_id).first() + if not node_item: + return False + if node_item.obj_id: + mongodb.delete_data_by_id(dbname="打分评级流程", sheet=node_item.node_name, _id=node_item.obj_id) + db.query(RatingFlowNode).filter_by(id=_id).update({"obj_id": None}) + db.commit() + return True diff --git a/App/Router/RatingFlowRouter.py b/App/Router/RatingFlowRouter.py index d992b6c..7ab1c93 100644 --- a/App/Router/RatingFlowRouter.py +++ b/App/Router/RatingFlowRouter.py @@ -5,7 +5,7 @@ from fastapi import APIRouter, Depends, HTTPException, Header from sqlalchemy.orm import Session from App.Crud import RatingFlowCrud as Crud -from App.Crud.RatingFlowNodeCrud import get_rating_node_data +from App.Crud.RatingFlowNodeCrud import get_rating_node_data, delete_rating_node_data from App.Crud.RatingFlowParticipantCrud import list_users_rating_flows from App.Schemas import RatingFlowSchema from Utils.AccessControl.AccessUtil import rbac @@ -127,12 +127,21 @@ def func(rating_flow_id: str, operation: str, db: Session = Depends(get_db)): @router.get("/import/input_data", summary="导入填报数据", tags=["评级节点"]) -def func(rating_flow_id: str, year: int, db: Session = Depends(get_db)): +def func(rating_flow_id: str, year: int, db: Session = Depends(get_db), mongodb: MongoHelper = Depends(get_mongodb)): # 获取流程; rf_item: 流程对象 rf_item = Crud.get_rating_flow(db=db, rating_flow_id=rating_flow_id) if not rf_item: raise HTTPException(status_code=404, detail="RatingFlow Not Found") + # 流程节点信息: nodes_item + nodes_item = dict() + for node in rf_item.nodes: + nodes_item.update({node.node_name: node.id}) + + # 重置后续节点content数据 + for node_id in nodes_item.values(): + delete_rating_node_data(db=db, mongodb=mongodb, _id=node_id) + # 获取打分卡; scorecard: 打分卡 scorecard = request_to_get( url='http://test.fecribd.com/api/model_store/scorecard/view?_id={}'.format(rf_item.scorecard_id) @@ -190,10 +199,16 @@ def func(rating_flow_id: str, db: Session = Depends(get_db), mongodb: MongoHelpe if not rf_item: raise HTTPException(status_code=404, detail="RatingFlow Not Found") - # 获取填报数据; input_data: 填报数据对象 + # 流程节点信息: nodes_item nodes_item = dict() for node in rf_item.nodes: nodes_item.update({node.node_name: node.id}) + + # 重置后续节点content数据 + for node_id in list(nodes_item.values())[1:]: + delete_rating_node_data(db=db, mongodb=mongodb, _id=node_id) + + # 获取填报数据; input_data: 填报数据对象 input_data = get_rating_node_data(db=db, mongodb=mongodb, _id=nodes_item.get("填报数据")) if not input_data: raise HTTPException(status_code=404, detail="InputData Not Found") @@ -237,7 +252,7 @@ def func(rating_flow_id: str, db: Session = Depends(get_db), mongodb: MongoHelpe if not param_value: raise HTTPException( status_code=202, - detail="参数数值缺失; 参数: {}; 加载路径: {}".format( + detail="参数不能为空; 参数: {}; 加载路径: {}".format( param.get("参数"), param.get("加载路径").__str__().replace("year", fmt_year) ) @@ -444,6 +459,15 @@ def func(rating_flow_id: str, db: Session = Depends(get_db), mongodb: MongoHelpe if not rf_item: raise HTTPException(status_code=404, detail="RatingFlow Not Found") + # 流程节点信息: nodes_item + nodes_item = dict() + for node in rf_item.nodes: + nodes_item.update({node.node_name: node.id}) + + # 重置后续节点content数据 + for node_id in list(nodes_item.values())[2:]: + delete_rating_node_data(db=db, mongodb=mongodb, _id=node_id) + # 获取打分卡; scorecard: 打分卡 scorecard = request_to_get( url='http://test.fecribd.com/api/model_store/scorecard/view?_id={}'.format(rf_item.scorecard_id) @@ -535,6 +559,16 @@ def func(rating_flow_id: str, db: Session = Depends(get_db), mongodb: MongoHelpe rf_item = Crud.get_rating_flow(db=db, rating_flow_id=rating_flow_id) if not rf_item: raise HTTPException(status_code=404, detail="RatingFlow Not Found") + + # 流程节点信息: nodes_item + nodes_item = dict() + for node in rf_item.nodes: + nodes_item.update({node.node_name: node.id}) + + # 重置后续节点content数据 + for node_id in list(nodes_item.values())[3:]: + delete_rating_node_data(db=db, mongodb=mongodb, _id=node_id) + # 查询节点保存的数据 adjust_node = [node for node in rf_item.nodes if node.node_name == '个体信用状况'] if not adjust_node: