changes
This commit is contained in:
parent
3f7474c9ed
commit
67a8c1e947
|
@ -0,0 +1,29 @@
|
|||
from sqlalchemy.orm import Session
|
||||
|
||||
from App.Model import RatingConfigModel as Model
|
||||
from Utils.UniqueCoder.TimeSerialNumUtils import create_time_serial_num
|
||||
|
||||
|
||||
def create_process_table(db: Session, mongodb, _id, content):
|
||||
item = Model.ScoreCardProcessTable()
|
||||
item.id = create_time_serial_num()
|
||||
item.scorecard_id = _id
|
||||
obj_id = mongodb.insert_data(dbname="打分卡配置", sheet="流程表", data=content)
|
||||
item.obj_id = obj_id
|
||||
db.add(item)
|
||||
db.commit()
|
||||
return True
|
||||
|
||||
|
||||
def delete_process_table(db: Session, mongodb, _id):
|
||||
item = db.query(Model.ScoreCardProcessTable).filter_by(scorecard_id=_id).first()
|
||||
mongodb.delete_data_by_id(dbname="打分卡配置", sheet="流程表", _id=item.obj_id)
|
||||
db.query(Model.ScoreCardProcessTable).filter_by(id=item.id).delete()
|
||||
db.commit()
|
||||
return True
|
||||
|
||||
|
||||
def get_process_table(db: Session, mongodb, _id):
|
||||
item = db.query(Model.ScoreCardProcessTable).filter_by(scorecard_id=_id).first()
|
||||
data = mongodb.find_data_by_id(dbname="打分卡配置", sheet="流程表", _id=item.obj_id)
|
||||
return data
|
|
@ -4,6 +4,8 @@ from sqlalchemy.orm import Session
|
|||
|
||||
from App.Model import RatingConfigModel as Model
|
||||
from App.Schema import ScoreCardSchema as Schema
|
||||
from App.Schema import CategorySchema
|
||||
from Utils.DataBase.MongoHelperUtils import MongoHelper
|
||||
from Utils.UniqueCoder.MysqlColumnIDUtils import set_next_id
|
||||
|
||||
|
||||
|
@ -61,3 +63,9 @@ def search_scorecard(db: Session, schema: Schema.SearchScoreCardReqBody):
|
|||
).count()
|
||||
|
||||
return items, count
|
||||
|
||||
|
||||
def get_sub_table_data(mongodb: MongoHelper, tablename: str, obj_id: str):
|
||||
CategorySchema.GetSubTableDataQueryBody(**{"tablename": tablename, "obj_id": obj_id})
|
||||
item = mongodb.find_data_by_id(dbname="打分卡配置", sheet=tablename, _id=obj_id)
|
||||
return item.get("data")
|
||||
|
|
|
@ -2,7 +2,6 @@ from sqlalchemy.dialects.mysql import LONGTEXT
|
|||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy import Column, String, ForeignKey
|
||||
|
||||
from Utils.DataBase.MongoHelperUtils import get_mongodb
|
||||
from Utils.DataBase.SqlAlchemyUtils import Base, engine
|
||||
|
||||
|
||||
|
@ -23,23 +22,6 @@ class ScoreCard(Base):
|
|||
process_table = relationship("ScoreCardProcessTable", backref="scorecard", uselist=False)
|
||||
scorecard_dp_ac_auth = relationship("ScoreCardDpAcAuth", back_populates="scorecard")
|
||||
|
||||
def search_result_format(self):
|
||||
__dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns}
|
||||
__dict.update({"major_category": self.major_category.__str__()})
|
||||
__dict.update({"subcategory": self.subcategory.__str__()})
|
||||
__dict.pop("subcategory_id")
|
||||
__dict.pop("description")
|
||||
return __dict
|
||||
|
||||
def dict(self):
|
||||
__dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns}
|
||||
__dict.update({"major_category": self.major_category.__str__()})
|
||||
__dict.update({"subcategory": self.subcategory.__str__()})
|
||||
__dict.update({"data_table": None if not self.data_table else self.data_table.dict()})
|
||||
__dict.update({"index_table": None if not self.index_table else self.index_table.dict()})
|
||||
__dict.update({"rank_table": None if not self.rank_table else self.rank_table.dict()})
|
||||
return __dict
|
||||
|
||||
|
||||
class ScoreCardDataTable(Base):
|
||||
__tablename__ = "scorecard_data_table"
|
||||
|
@ -48,11 +30,6 @@ class ScoreCardDataTable(Base):
|
|||
obj_id = Column(String(24))
|
||||
scorecard_id = Column(String(16), ForeignKey("scorecard.id"))
|
||||
|
||||
def dict(self):
|
||||
mongodb = get_mongodb()
|
||||
item = mongodb.find_data_by_id(dbname="打分卡配置", sheet="数据表", _id=self.obj_id)
|
||||
return item.get("data")
|
||||
|
||||
|
||||
class ScoreCardIndexTable(Base):
|
||||
__tablename__ = "scorecard_index_table"
|
||||
|
@ -61,11 +38,6 @@ class ScoreCardIndexTable(Base):
|
|||
obj_id = Column(String(24))
|
||||
scorecard_id = Column(String(16), ForeignKey("scorecard.id"))
|
||||
|
||||
def dict(self):
|
||||
mongodb = get_mongodb()
|
||||
item = mongodb.find_data_by_id(dbname="打分卡配置", sheet="指标表", _id=self.obj_id)
|
||||
return item.get("data")
|
||||
|
||||
|
||||
class ScoreCardRankTable(Base):
|
||||
__tablename__ = "scorecard_rank_table"
|
||||
|
@ -74,11 +46,6 @@ class ScoreCardRankTable(Base):
|
|||
obj_id = Column(String(24))
|
||||
scorecard_id = Column(String(16), ForeignKey("scorecard.id"))
|
||||
|
||||
def dict(self):
|
||||
mongodb = get_mongodb()
|
||||
item = mongodb.find_data_by_id(dbname="打分卡配置", sheet="评级表", _id=self.obj_id)
|
||||
return item.get("data")
|
||||
|
||||
|
||||
class ScoreCardProcessTable(Base):
|
||||
__tablename__ = "scorecard_process_table"
|
||||
|
|
|
@ -5,7 +5,7 @@ from sqlalchemy.orm import Session
|
|||
|
||||
from App.Crud import ScoreCardCrud, DataTableCrud
|
||||
from Utils.AccessControl.AccessUtil import rbac
|
||||
from Utils.DataBase.MongoHelperUtils import get_mongodb
|
||||
from Utils.DataBase.MongoHelperUtils import get_mongodb, MongoHelper
|
||||
from Utils.DataBase.SqlAlchemyUtils import get_db
|
||||
|
||||
router = APIRouter(
|
||||
|
@ -16,7 +16,7 @@ router = APIRouter(
|
|||
|
||||
|
||||
@router.post("/create", summary="新建数据表")
|
||||
async def func(_id: str, file: UploadFile = File(...), db: Session = Depends(get_db)):
|
||||
async def func(_id: str, file: UploadFile = File(...), db: Session = Depends(get_db), mongodb: MongoHelper = Depends(get_mongodb)):
|
||||
item = ScoreCardCrud.get_scorecard_by_id(db=db, _id=_id)
|
||||
if not item:
|
||||
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
|
||||
|
@ -26,27 +26,19 @@ async def func(_id: str, file: UploadFile = File(...), db: Session = Depends(get
|
|||
_file = await file.read()
|
||||
content = json.loads(_file.decode('utf-8'))
|
||||
|
||||
mongodb = get_mongodb()
|
||||
|
||||
DataTableCrud.create_data_table(db=db, mongodb=mongodb, _id=_id, content={"data": content})
|
||||
|
||||
mongodb.client.close()
|
||||
|
||||
return {"info": "Success"}
|
||||
|
||||
|
||||
@router.post("/delete", summary="删除数据表")
|
||||
def func(_id: str, db: Session = Depends(get_db)):
|
||||
def func(_id: str, db: Session = Depends(get_db), mongodb: MongoHelper = Depends(get_mongodb)):
|
||||
item = ScoreCardCrud.get_scorecard_by_id(db=db, _id=_id)
|
||||
if not item:
|
||||
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
|
||||
if not item.data_table:
|
||||
raise HTTPException(status_code=202, detail="DataTable Not Found")
|
||||
|
||||
mongodb = get_mongodb()
|
||||
|
||||
DataTableCrud.delete_data_table(db=db, mongodb=mongodb, _id=_id)
|
||||
|
||||
mongodb.client.close()
|
||||
|
||||
return {"info": "Success"}
|
||||
|
|
|
@ -5,7 +5,7 @@ from sqlalchemy.orm import Session
|
|||
|
||||
from App.Crud import ScoreCardCrud, IndexTableCrud
|
||||
from Utils.AccessControl.AccessUtil import rbac
|
||||
from Utils.DataBase.MongoHelperUtils import get_mongodb
|
||||
from Utils.DataBase.MongoHelperUtils import get_mongodb, MongoHelper
|
||||
from Utils.DataBase.SqlAlchemyUtils import get_db
|
||||
|
||||
router = APIRouter(
|
||||
|
@ -16,7 +16,7 @@ router = APIRouter(
|
|||
|
||||
|
||||
@router.post("/create", summary="新建指标表")
|
||||
async def func(_id: str, file: UploadFile = File(...), db: Session = Depends(get_db)):
|
||||
async def func(_id: str, file: UploadFile = File(...), db: Session = Depends(get_db), mongodb: MongoHelper = Depends(get_mongodb)):
|
||||
item = ScoreCardCrud.get_scorecard_by_id(db=db, _id=_id)
|
||||
if not item:
|
||||
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
|
||||
|
@ -26,27 +26,19 @@ async def func(_id: str, file: UploadFile = File(...), db: Session = Depends(get
|
|||
_file = await file.read()
|
||||
content = json.loads(_file.decode('utf-8'))
|
||||
|
||||
mongodb = get_mongodb()
|
||||
|
||||
IndexTableCrud.create_index_table(db=db, mongodb=mongodb, _id=_id, content={"data": content})
|
||||
|
||||
mongodb.client.close()
|
||||
|
||||
return {"info": "Success"}
|
||||
|
||||
|
||||
@router.post("/delete", summary="删除指标表")
|
||||
def func(_id: str, db: Session = Depends(get_db)):
|
||||
def func(_id: str, db: Session = Depends(get_db), mongodb: MongoHelper = Depends(get_mongodb)):
|
||||
item = ScoreCardCrud.get_scorecard_by_id(db=db, _id=_id)
|
||||
if not item:
|
||||
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
|
||||
if not item.index_table:
|
||||
raise HTTPException(status_code=202, detail="IndexTable Not Found")
|
||||
|
||||
mongodb = get_mongodb()
|
||||
|
||||
IndexTableCrud.delete_index_table(db=db, mongodb=mongodb, _id=_id)
|
||||
|
||||
mongodb.client.close()
|
||||
|
||||
return {"info": "Success"}
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
import json
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, UploadFile, File
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from App.Crud import ScoreCardCrud, ProcessTableCrud
|
||||
from Utils.AccessControl.AccessUtil import rbac
|
||||
from Utils.DataBase.MongoHelperUtils import MongoHelper, get_mongodb
|
||||
from Utils.DataBase.SqlAlchemyUtils import get_db
|
||||
|
||||
router = APIRouter(
|
||||
tags=["打分卡流程表"],
|
||||
prefix="/api/model_store/scorecard/process_table",
|
||||
dependencies=[Depends(rbac)]
|
||||
)
|
||||
|
||||
|
||||
@router.post("/create", summary="新建流程表")
|
||||
async def func(_id: str, file: UploadFile = File(...), db: Session = Depends(get_db), mongodb: MongoHelper = Depends(get_mongodb)):
|
||||
item = ScoreCardCrud.get_scorecard_by_id(db=db, _id=_id)
|
||||
if not item:
|
||||
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
|
||||
if item.process_table:
|
||||
raise HTTPException(status_code=202, detail="ProcessTable Already Existed")
|
||||
|
||||
_file = await file.read()
|
||||
content = json.loads(_file.decode('utf-8'))
|
||||
|
||||
ProcessTableCrud.create_process_table(db=db, mongodb=mongodb, _id=_id, content={"data": content})
|
||||
|
||||
return {"info": "Success"}
|
||||
|
||||
|
||||
@router.post("/delete", summary="删除流程表")
|
||||
def func(_id: str, db: Session = Depends(get_db), mongodb: MongoHelper = Depends(get_mongodb)):
|
||||
item = ScoreCardCrud.get_scorecard_by_id(db=db, _id=_id)
|
||||
if not item:
|
||||
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
|
||||
if not item.process_table:
|
||||
raise HTTPException(status_code=202, detail="ProcessTable Not Found")
|
||||
|
||||
ProcessTableCrud.delete_process_table(db=db, mongodb=mongodb, _id=_id)
|
||||
|
||||
return {"info": "Success"}
|
||||
|
||||
|
||||
@router.post("/view", summary="查看流程表")
|
||||
def func(_id: str, db: Session = Depends(get_db), mongodb: MongoHelper = Depends(get_mongodb)):
|
||||
item = ScoreCardCrud.get_scorecard_by_id(db=db, _id=_id)
|
||||
if not item:
|
||||
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
|
||||
if not item.process_table:
|
||||
raise HTTPException(status_code=202, detail="ProcessTable Not Found")
|
||||
|
||||
item = ProcessTableCrud.get_process_table(db=db, mongodb=mongodb, _id=_id)
|
||||
|
||||
return item.get("data")
|
|
@ -5,7 +5,7 @@ from sqlalchemy.orm import Session
|
|||
|
||||
from App.Crud import ScoreCardCrud, RankTableCrud
|
||||
from Utils.AccessControl.AccessUtil import rbac
|
||||
from Utils.DataBase.MongoHelperUtils import get_mongodb
|
||||
from Utils.DataBase.MongoHelperUtils import get_mongodb, MongoHelper
|
||||
from Utils.DataBase.SqlAlchemyUtils import get_db
|
||||
|
||||
router = APIRouter(
|
||||
|
@ -16,7 +16,7 @@ router = APIRouter(
|
|||
|
||||
|
||||
@router.post("/create", summary="新建评级表")
|
||||
async def func(_id: str, file: UploadFile = File(...), db: Session = Depends(get_db)):
|
||||
async def func(_id: str, file: UploadFile = File(...), db: Session = Depends(get_db), mongodb: MongoHelper = Depends(get_mongodb)):
|
||||
item = ScoreCardCrud.get_scorecard_by_id(db=db, _id=_id)
|
||||
if not item:
|
||||
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
|
||||
|
@ -26,27 +26,19 @@ async def func(_id: str, file: UploadFile = File(...), db: Session = Depends(get
|
|||
_file = await file.read()
|
||||
content = json.loads(_file.decode('utf-8'))
|
||||
|
||||
mongodb = get_mongodb()
|
||||
|
||||
RankTableCrud.create_rank_table(db=db, mongodb=mongodb, _id=_id, content={"data": content})
|
||||
|
||||
mongodb.client.close()
|
||||
|
||||
return {"info": "Success"}
|
||||
|
||||
|
||||
@router.post("/delete", summary="删除评级表")
|
||||
def func(_id: str, db: Session = Depends(get_db)):
|
||||
def func(_id: str, db: Session = Depends(get_db), mongodb: MongoHelper = Depends(get_mongodb)):
|
||||
item = ScoreCardCrud.get_scorecard_by_id(db=db, _id=_id)
|
||||
if not item:
|
||||
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
|
||||
if not item.rank_table:
|
||||
raise HTTPException(status_code=202, detail="RankTable Not Found")
|
||||
|
||||
mongodb = get_mongodb()
|
||||
|
||||
RankTableCrud.delete_rank_table(db=db, mongodb=mongodb, _id=_id)
|
||||
|
||||
mongodb.client.close()
|
||||
|
||||
return {"info": "Success"}
|
||||
|
|
|
@ -5,6 +5,7 @@ from App.Crud import ScoreCardCrud as Crud
|
|||
from App.Crud import CategoryCrud
|
||||
from App.Schema import ScoreCardSchema as Schema
|
||||
from Utils.AccessControl.AccessUtil import rbac
|
||||
from Utils.DataBase.MongoHelperUtils import MongoHelper, get_mongodb
|
||||
from Utils.DataBase.SqlAlchemyUtils import get_db
|
||||
|
||||
router = APIRouter(
|
||||
|
@ -14,6 +15,17 @@ router = APIRouter(
|
|||
)
|
||||
|
||||
|
||||
def scorecard_to_dict(scorecard, mongodb: MongoHelper):
|
||||
__dict = {c.name: getattr(scorecard, c.name, None) for c in scorecard.__table__.columns}
|
||||
__dict.update({"major_category": scorecard.major_category.__str__()})
|
||||
__dict.update({"subcategory": scorecard.subcategory.__str__()})
|
||||
__dict.update({"data_table": None if not scorecard.data_table else Crud.get_sub_table_data(mongodb, "数据表", scorecard.data_table.obj_id)})
|
||||
__dict.update({"index_table": None if not scorecard.index_table else Crud.get_sub_table_data(mongodb, "指标表", scorecard.index_table.obj_id)})
|
||||
__dict.update({"rank_table": None if not scorecard.rank_table else Crud.get_sub_table_data(mongodb, "评级表", scorecard.rank_table.obj_id)})
|
||||
__dict.update({"process_table": None if not scorecard.process_table else Crud.get_sub_table_data(mongodb, "流程表", scorecard.process_table.obj_id)})
|
||||
return __dict
|
||||
|
||||
|
||||
@router.post("/create", summary="新建打分卡")
|
||||
def func(schema: Schema.CreateScoreCardReqBody, db: Session = Depends(get_db)):
|
||||
item = Crud.get_scorecard_by_name(db=db, name=schema.name)
|
||||
|
@ -67,18 +79,26 @@ def func(_id: str, schema: Schema.EditScoreCardReqBody, db: Session = Depends(ge
|
|||
|
||||
|
||||
@router.get("/view", summary="查看打分卡")
|
||||
def func(_id: str, db: Session = Depends(get_db)):
|
||||
def func(_id: str, db: Session = Depends(get_db), mongodb=Depends(get_mongodb)):
|
||||
item = Crud.get_scorecard_by_id(db=db, _id=_id)
|
||||
if not item:
|
||||
raise HTTPException(status_code=404, detail="ScoreCard Not Found")
|
||||
|
||||
return item.dict()
|
||||
return scorecard_to_dict(item, mongodb=mongodb)
|
||||
|
||||
|
||||
@router.post("/search", summary="查询打分卡", response_model=Schema.SearchScoreCardResBody)
|
||||
def func(schema: Schema.SearchScoreCardReqBody, db: Session = Depends(get_db)):
|
||||
scorecards, total = Crud.search_scorecard(db=db, schema=schema)
|
||||
|
||||
items = [scorecard.search_result_format() for scorecard in scorecards]
|
||||
def search_result_format(obj):
|
||||
__dict = {c.name: getattr(obj, c.name, None) for c in obj.__table__.columns}
|
||||
__dict.update({"major_category": obj.major_category.__str__()})
|
||||
__dict.update({"subcategory": obj.subcategory.__str__()})
|
||||
__dict.pop("subcategory_id")
|
||||
__dict.pop("description")
|
||||
return __dict
|
||||
|
||||
items = [search_result_format(scorecard) for scorecard in scorecards]
|
||||
|
||||
return {"items": items, "total": total}
|
||||
|
|
|
@ -1,9 +1,17 @@
|
|||
from enum import Enum
|
||||
from typing import List
|
||||
from pydantic import BaseModel
|
||||
|
||||
from Utils.Schemas.CommonSchema import EditBaseModel
|
||||
|
||||
|
||||
class SubTableNameEnum(Enum):
|
||||
enum01 = "数据表"
|
||||
enum02 = "指标表"
|
||||
enum03 = "评级表"
|
||||
enum04 = "流程表"
|
||||
|
||||
|
||||
class CreateScoreCardDpAcAuthReqBody(BaseModel):
|
||||
department_id: str = None
|
||||
scorecard_id: str = None
|
||||
|
@ -41,3 +49,11 @@ class SearchScoreCardResItem(BaseModel):
|
|||
class SearchScoreCardResBody(BaseModel):
|
||||
items: List[SearchScoreCardResItem] = []
|
||||
total: int = 0
|
||||
|
||||
|
||||
class GetSubTableDataQueryBody(BaseModel):
|
||||
tablename: SubTableNameEnum = None
|
||||
obj_id: str = None
|
||||
|
||||
class Config:
|
||||
use_enum_values = True
|
||||
|
|
|
@ -44,5 +44,8 @@ class MongoHelper:
|
|||
|
||||
|
||||
def get_mongodb():
|
||||
db = MongoHelper("test")
|
||||
return db
|
||||
try:
|
||||
db = MongoHelper("test")
|
||||
yield db
|
||||
finally:
|
||||
db.client.close()
|
||||
|
|
4
main.py
4
main.py
|
@ -1,7 +1,8 @@
|
|||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from App.Router import ScoreCardRouter, CategoryRouter, DataTableRouter, IndexTableRouter, RankTableRouter
|
||||
from App.Router import ScoreCardRouter, CategoryRouter, DataTableRouter, IndexTableRouter, RankTableRouter, \
|
||||
ProcessTableRouter
|
||||
|
||||
app = FastAPI(
|
||||
title="模型仓库",
|
||||
|
@ -22,3 +23,4 @@ app.include_router(CategoryRouter.router)
|
|||
app.include_router(DataTableRouter.router)
|
||||
app.include_router(IndexTableRouter.router)
|
||||
app.include_router(RankTableRouter.router)
|
||||
app.include_router(ProcessTableRouter.router)
|
||||
|
|
Loading…
Reference in New Issue