添加看板接口
This commit is contained in:
parent
a37e7666be
commit
96a4273016
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{"name":"main","type":"python","request":"launch","program":"main.py","console":"integratedTerminal","justMyCode":true},
|
||||
]
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"[python]": {
|
||||
"editor.defaultFormatter": "ms-python.autopep8"
|
||||
},
|
||||
"editor.defaultFormatter": null,
|
||||
"editor.formatOnPaste": false,
|
||||
"editor.formatOnSave": true,
|
||||
"[jsonc]": {
|
||||
"editor.defaultFormatter": "vscode.json-language-features"
|
||||
},
|
||||
}
|
8
main.py
8
main.py
|
@ -4,7 +4,7 @@ from fastapi import FastAPI
|
|||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from starlette.staticfiles import StaticFiles
|
||||
from config.log import uvicorn_log_config
|
||||
from context.common import conf, common_db, common_db_v2,common_db_base_v2
|
||||
from context.common import conf, common_db, common_db_v2, common_db_base_v2
|
||||
from mods import router as main_router
|
||||
|
||||
common_db.init_database(create_db=True)
|
||||
|
@ -19,7 +19,8 @@ app = FastAPI(
|
|||
)
|
||||
if not os.path.exists("static"):
|
||||
os.makedirs("static")
|
||||
app.mount(f"/{sys_name}/static", StaticFiles(directory="static"), name="static")
|
||||
app.mount(f"/{sys_name}/static",
|
||||
StaticFiles(directory="static"), name="static")
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"],
|
||||
|
@ -32,4 +33,5 @@ app.router.prefix = f"/{sys_name}"
|
|||
app.include_router(main_router.router)
|
||||
print(f"接口文档链接: http://127.0.0.1:{conf['app']['port']}{app.docs_url}")
|
||||
if __name__ == '__main__':
|
||||
uvicorn.run(app, log_config=uvicorn_log_config, host="0.0.0.0", port=int(conf['app']['port']))
|
||||
uvicorn.run(app, log_config=uvicorn_log_config,
|
||||
host="0.0.0.0", port=int(conf['app']['port']))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, File
|
||||
from sqlalchemy.orm import Session
|
||||
|
@ -11,9 +11,8 @@ from . import crud
|
|||
from . import schemas
|
||||
from .utils import RateServeFlow, get_node_if_not_finished, RateUtils, get_node
|
||||
from ...models import RateDataPreparationNode, RateServe, RateWorkNode, ReportWorkNode, CertWorkNode
|
||||
from ...schemas import NodeState
|
||||
from ...schemas import NodeState, RateServeState
|
||||
from fastapi import UploadFile as FastApiUploadFile, Form
|
||||
|
||||
router = APIRouter(tags=["评级服务"], prefix='')
|
||||
|
||||
|
||||
|
@ -68,7 +67,8 @@ def pass_node(req: schemas.PassNodeReq, db: Session = Depends(get_db)):
|
|||
|
||||
@router.post("/rate_serve/update_node_remark", summary="节点备注编辑接口")
|
||||
def update_node_remark(req: schemas.UpdateNodeRemarkReq, db: Session = Depends(get_db)):
|
||||
RateServeFlow.update_node_remark(db, req.serve_id, req.node_name, req.remark)
|
||||
RateServeFlow.update_node_remark(
|
||||
db, req.serve_id, req.node_name, req.remark)
|
||||
return "保存成功"
|
||||
|
||||
|
||||
|
@ -94,7 +94,8 @@ def rate_serve_cancel(req: schemas.RateServeCancelReq, db: Session = Depends(get
|
|||
@router.post("/rate_post_data_check_node/update_rate_sheet_data", summary="更新企业填报数据",
|
||||
tags=['企业提交材料审核节点'])
|
||||
def update_rate_sheet_data(req: schemas.UpdateRateSheetDataReq, db: Session = Depends(get_db)):
|
||||
node, serve = get_node_if_not_finished(db, req.serve_id, 'rate_post_data_check_node')
|
||||
node, serve = get_node_if_not_finished(
|
||||
db, req.serve_id, 'rate_post_data_check_node')
|
||||
node.data = req.data
|
||||
db.commit()
|
||||
return "保存成功"
|
||||
|
@ -104,8 +105,10 @@ def update_rate_sheet_data(req: schemas.UpdateRateSheetDataReq, db: Session = De
|
|||
@router.post("/rate_data_preparation_node/api_data/load", summary="导入三方接口数据",
|
||||
tags=['三方接口数据审核节点'])
|
||||
def api_data_load(req: schemas.ApiDataLoadReq, db: Session = Depends(get_db)):
|
||||
node, serve = get_node_if_not_finished(db, req.serve_id, 'rate_data_preparation_node')
|
||||
serve: RateServe = db.query(RateServe).filter(RateServe.serve_id == req.serve_id).first()
|
||||
node, serve = get_node_if_not_finished(
|
||||
db, req.serve_id, 'rate_data_preparation_node')
|
||||
serve: RateServe = db.query(RateServe).filter(
|
||||
RateServe.serve_id == req.serve_id).first()
|
||||
if not serve.company:
|
||||
raise HTTPException(status_code=303, detail='该评级申请未绑定公司信息')
|
||||
data, schema = RateUtils.load_api_data_by_company_name(serve.company.name)
|
||||
|
@ -125,7 +128,8 @@ def api_data_get(req: schemas.ApiDataGetReq, db: Session = Depends(get_db)):
|
|||
@router.post("/rate_data_preparation_node/api_data/update", summary="更新三方接口数据",
|
||||
tags=['三方接口数据审核节点'])
|
||||
def api_data_update(req: schemas.ApiDataUpdateReq, db: Session = Depends(get_db)):
|
||||
node, serve = get_node_if_not_finished(db, req.serve_id, 'rate_data_preparation_node')
|
||||
node, serve = get_node_if_not_finished(
|
||||
db, req.serve_id, 'rate_data_preparation_node')
|
||||
node.data = req.data
|
||||
db.commit()
|
||||
return "导入成功"
|
||||
|
@ -155,7 +159,8 @@ def do_rate(req: schemas.DoRateReq, db: Session = Depends(get_db)):
|
|||
@router.post("/report_work_node/make_report", summary="报告生成接口",
|
||||
tags=['报告生成节点'])
|
||||
def make_report(req: schemas.MakeReportReq, db: Session = Depends(get_db)):
|
||||
node, serve = get_node_if_not_finished(db, req.serve_id, 'report_work_node')
|
||||
node, serve = get_node_if_not_finished(
|
||||
db, req.serve_id, 'report_work_node')
|
||||
serve: RateServe
|
||||
node: ReportWorkNode
|
||||
company_name = serve.company.name
|
||||
|
@ -172,7 +177,8 @@ def make_report(req: schemas.MakeReportReq, db: Session = Depends(get_db)):
|
|||
req.report_time,
|
||||
req.expiry_year)
|
||||
report_file_name = f"{company_name}评级报告.docx"
|
||||
file = file_upload_by_content(db, report_file_name, content, 'application/docx', 'docx', sub_type='初版评级报告')
|
||||
file = file_upload_by_content(
|
||||
db, report_file_name, content, 'application/docx', 'docx', sub_type='初版评级报告')
|
||||
node.origin_file_id = file.id
|
||||
node.origin_create_time = datetime.now()
|
||||
db.commit()
|
||||
|
@ -202,8 +208,31 @@ def make_cert(req: schemas.CertWorkNodeReq, db: Session = Depends(get_db)):
|
|||
node: CertWorkNode
|
||||
company_name = serve.company.name
|
||||
report_file_name = f"{company_name}证书.docx"
|
||||
file = file_upload_by_content(db, report_file_name, b"", 'application/docx', 'docx', sub_type='评级证书')
|
||||
file = file_upload_by_content(
|
||||
db, report_file_name, b"", 'application/docx', 'docx', sub_type='评级证书')
|
||||
node.file_id = file.id
|
||||
node.cert_create_time = datetime.now()
|
||||
db.commit()
|
||||
return "报告生成成功"
|
||||
|
||||
|
||||
@router.post("/rate_serve/dashboard_data/get", summary="看板数据获取", response_model=schemas.DashboardDataGetRes,
|
||||
tags=['看板数据'])
|
||||
def make_cert(db: Session = Depends(get_db)):
|
||||
examining = db.query(RateServe).filter(
|
||||
RateServe.status == RateServeState.examining).count()
|
||||
rating = db.query(RateServe).filter(
|
||||
RateServe.status == RateServeState.rating).count()
|
||||
publish = 0
|
||||
published = 0
|
||||
work_days = [(item.finish_time-item.create_time).total_seconds()/24/60/60 for item in db.query(
|
||||
RateServe).filter(RateServe.finish_time > (datetime.now()-timedelta(days=15)))]
|
||||
average_work_day = round(
|
||||
sum(work_days)/len(work_days), 1) if work_days else 0
|
||||
return {
|
||||
"examining": examining,
|
||||
"rating": rating,
|
||||
"publish": publish,
|
||||
"published": published,
|
||||
"average_work_day": average_work_day
|
||||
}
|
||||
|
|
|
@ -203,3 +203,11 @@ class FinalReportUploadReq(RateServeId):
|
|||
class CertWorkNodeReq(RateServeId):
|
||||
cert_time: datetime
|
||||
expiry_year: Optional[int] = 2
|
||||
|
||||
|
||||
class DashboardDataGetRes(BaseModel):
|
||||
examining: int
|
||||
rating: int
|
||||
publish: int
|
||||
published: int
|
||||
average_work_day: float
|
||||
|
|
Loading…
Reference in New Issue