rate-sys-template/Mods/RateFlow/Crud.py

109 lines
3.2 KiB
Python

from Context.common import mg_db, common_db
from sqlalchemy.orm import Session
from .Models import RateFlow, RateFlowNode
from .Schemas import *
from Utils.MongoUtils import MongoConnect
from Utils.TimeSerialNumUtils import create_time_serial_num
def create_rate_flow(db: Session, company_name, company_user_id):
item = RateFlow()
item.company_name = company_name
item.status = "进行"
db.add(item)
db.commit()
db.refresh(item)
return item
def create_rate_flow_node(db: Session, node_num, node_name, rate_process_id):
item = RateFlowNode()
item.node_num = node_num
item.node_name = node_name
item.rate_process_id = rate_process_id
db.add(item)
db.commit()
return True
def get_rate_flow_all_nodes(_id: str, db: Session, mongodb: MongoConnect, with_content=False):
def nodes_to_return(objs):
__list = list()
for obj in objs:
__dict = dict()
__dict.update({"node_id": obj.id})
__dict.update({"node_num": obj.node_num})
__dict.update({"node_name": obj.node_name})
__dict.update({"status": obj.status})
if with_content:
__dict.update(
{"content": mongodb.find_data_by_id(dbname="打分评级流程", sheet=obj.node_name, _id=obj.obj_id)})
__list.append(__dict)
return __list
item = db.query(RateFlow).filter_by(id=_id).first()
if not item:
return False
return nodes_to_return(list(item.nodes))
def save_rate_flow_node(node_id: str, data: dict, db: Session, mongodb: MongoConnect):
# 查询节点信息
node = db.query(RateFlowNode).filter_by(id=node_id).first()
mongodb.replace_data_by_id("评级流程", node.node_name, node.obj_id, data)
return True
def get_rate_flow(db, rate_flow_id: str):
item = db.query(RateFlow).filter_by(id=rate_flow_id).first()
return item
def edit_rate_status(db, rate_flow_id, status):
data = {"status": status}
db.query(RateFlow).filter_by(id=rate_flow_id).update(data)
db.commit()
return db.query(RateFlow).filter_by(id=rate_flow_id).first()
def change_rate_node_status(db, _id: str, status: str):
update_data = {"status": status}
db.query(RateFlowNode).filter_by(id=_id).update(update_data)
db.commit()
return db.query(RateFlowNode).filter_by(id=_id).first()
def delete_rate_flow(db, _id: str):
db.query(RateFlow).filter_by(id=_id).delete()
db.commit()
return True
def delete_rate_flow_node(db, _id: str):
db.query(RateFlowNode).filter_by(id=_id).delete()
db.commit()
return True
def get_rate_node_data(_id: str, db: Session, mongodb: MongoConnect):
item = db.query(RateFlowNode).filter_by(id=_id).first()
content = mongodb.find_data_by_id(dbname="打分评级流程", sheet=item.node_name, _id=item.obj_id)
return content
def delete_rate_node_data(_id: str, db: Session, mongodb: MongoConnect):
node_item = db.query(RateFlowNode).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(RateFlowNode).filter_by(id=_id).update({"obj_id": None})
db.commit()
return True