添加区域调研表

This commit is contained in:
wcq 2023-03-27 14:31:51 +08:00
parent d7e10b68f1
commit 79121c43c8
18 changed files with 583 additions and 2 deletions

View File

View File

View File

@ -0,0 +1,57 @@
from sqlalchemy.orm import Session
from . import Schemas
from .Models import CompanyConclusion
def company_conclusion_add(db: Session, data: Schemas.CompanyConclusionAddInfo):
item = CompanyConclusion(**data.dict())
db.add(item)
db.commit()
db.refresh(item)
return item
def company_conclusion_delete(db: Session, item_id: int):
db.query(CompanyConclusion).filter_by(id=item_id).delete()
db.commit()
def company_conclusion_update(db: Session, data: Schemas.CompanyConclusionUpdateInfo):
db.query(CompanyConclusion).filter_by(id=data.id).update({key: v for key, v in data.dict().items() if v is not None})
db.commit()
item = db.query(CompanyConclusion).filter_by(id=data.id).first()
return item
def company_conclusion_get(db: Session, item_id: int):
item = db.query(CompanyConclusion).filter_by(id=item_id).first()
return item
def company_conclusion_query(db: Session, params: Schemas.CompanyConclusionQuery):
params_dict = params.dict()
query = db.query(CompanyConclusion)
db_model = CompanyConclusion
for key, value in params_dict.items():
if key not in ['page', 'page_size'] and value is not None:
if type(value) == str:
query = query.filter(getattr(db_model, key).like(f'%{value}%'))
elif type(value) in [int, float, bool]:
query = query.filter_by(**{key: value})
else:
query = query.filter(getattr(db_model, key) == value)
count = query.count()
page = None
page_size = None
if 'page' in params_dict:
page = params_dict['page']
if 'page_size' in params_dict:
page_size = params_dict['page_size']
# 页数不超过100
page_size = min(page_size, 100)
if page is not None and page_size is not None:
query = query.offset((page - 1) * page_size).limit(page_size).all()
return count, query
################

View File

@ -0,0 +1,20 @@
from sqlalchemy.orm import relationship
from Context.common import common_db
from sqlalchemy import Column, Date, Integer, String, ForeignKey, Text, DateTime, func
class CompanyConclusion(common_db.Base):
"""
调研结论表
"""
__tablename__ = "company_conclusion"
id = Column(Integer, primary_key=True)
company_id = Column(Integer, comment="企业ID")
result_date = Column(Date, comment="评价截至时间")
risk = Column(Text, comment="风险")
attention = Column(Text, comment="关注")
suggestion = Column(Text, comment="建议")
def to_dict(self):
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}
return data

View File

@ -0,0 +1,43 @@
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from Context.common import common_db
from . import Schemas
from . import Crud
router = APIRouter(tags=["调研结论"])
@router.post("/company_conclusion/add", summary="添加调研结论", response_model=Schemas.CompanyConclusionAddRes)
def company_conclusion_add(req: Schemas.CompanyConclusionAddReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_conclusion_add(db, req)
return Schemas.CompanyConclusionAddRes(**item.to_dict())
@router.post("/company_conclusion/delete", summary="删除调研结论")
def company_conclusion_delete(req: Schemas.CompanyConclusionDeleteReq, db: Session = Depends(common_db.get_db)):
Crud.company_conclusion_delete(db, req.id)
return "删除成功"
@router.post("/company_conclusion/update", summary="更新调研结论", response_model=Schemas.CompanyConclusionUpdateRes)
def company_conclusion_update(req: Schemas.CompanyConclusionUpdateReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_conclusion_update(db, req)
return Schemas.CompanyConclusionUpdateRes(**item.to_dict())
@router.post("/company_conclusion/get", summary="获取调研结论", response_model=Schemas.CompanyConclusionGetRes)
def company_conclusion_get(req: Schemas.CompanyConclusionGetReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_conclusion_get(db, req.id)
if not item:
raise HTTPException(detail="未查询到信息", status_code=404)
return Schemas.CompanyConclusionGetRes(**item.to_dict())
@router.post("/company_conclusion/query", summary="查询调研结论", response_model=Schemas.CompanyConclusionQueryRes)
def company_conclusion_query(req: Schemas.CompanyConclusionQueryReq, db: Session = Depends(common_db.get_db)):
count, query = Crud.company_conclusion_query(db, req)
items = [Schemas.CompanyConclusionInfo(**item.to_dict()) for item in query]
return Schemas.CompanyConclusionQueryRes(count=count, items=items)
#########

View File

@ -0,0 +1,67 @@
from datetime import datetime, date
from pydantic import BaseModel
from typing import Optional, List
class CompanyConclusionInfo(BaseModel):
id: Optional[int]
company_id: Optional[int]
result_date: Optional[date]
risk: Optional[str]
attention: Optional[str]
suggestion: Optional[str]
class CompanyConclusionAddInfo(BaseModel):
company_id: int
result_date: Optional[date]
risk: Optional[str]
attention: Optional[str]
suggestion: Optional[str]
class CompanyConclusionAddReq(CompanyConclusionAddInfo):
pass
class CompanyConclusionAddRes(CompanyConclusionInfo):
pass
class CompanyConclusionUpdateInfo(CompanyConclusionInfo):
pass
class CompanyConclusionUpdateReq(CompanyConclusionUpdateInfo):
pass
class CompanyConclusionUpdateRes(CompanyConclusionInfo):
pass
class CompanyConclusionQuery(CompanyConclusionInfo):
pass
class CompanyConclusionQueryReq(CompanyConclusionQuery):
pass
class CompanyConclusionGetReq(BaseModel):
id: int
class CompanyConclusionGetRes(CompanyConclusionInfo):
pass
class CompanyConclusionQueryRes(BaseModel):
count: int
items: List[CompanyConclusionInfo]
class CompanyConclusionDeleteReq(BaseModel):
id: int
#######################

View File

@ -0,0 +1,57 @@
from sqlalchemy.orm import Session
from . import Schemas
from .Models import CompanyMeetingRecord
def company_meeting_record_add(db: Session, data: Schemas.CompanyMeetingRecordAddInfo):
item = CompanyMeetingRecord(**data.dict())
db.add(item)
db.commit()
db.refresh(item)
return item
def company_meeting_record_delete(db: Session, item_id: int):
db.query(CompanyMeetingRecord).filter_by(id=item_id).delete()
db.commit()
def company_meeting_record_update(db: Session, data: Schemas.CompanyMeetingRecordUpdateInfo):
db.query(CompanyMeetingRecord).filter_by(id=data.id).update({key: v for key, v in data.dict().items() if v is not None})
db.commit()
item = db.query(CompanyMeetingRecord).filter_by(id=data.id).first()
return item
def company_meeting_record_get(db: Session, item_id: int):
item = db.query(CompanyMeetingRecord).filter_by(id=item_id).first()
return item
def company_meeting_record_query(db: Session, params: Schemas.CompanyMeetingRecordQuery):
params_dict = params.dict()
query = db.query(CompanyMeetingRecord)
db_model = CompanyMeetingRecord
for key, value in params_dict.items():
if key not in ['page', 'page_size'] and value is not None:
if type(value) == str:
query = query.filter(getattr(db_model, key).like(f'%{value}%'))
elif type(value) in [int, float, bool]:
query = query.filter_by(**{key: value})
else:
query = query.filter(getattr(db_model, key) == value)
count = query.count()
page = None
page_size = None
if 'page' in params_dict:
page = params_dict['page']
if 'page_size' in params_dict:
page_size = params_dict['page_size']
# 页数不超过100
page_size = min(page_size, 100)
if page is not None and page_size is not None:
query = query.offset((page - 1) * page_size).limit(page_size).all()
return count, query
################

View File

@ -0,0 +1,19 @@
from sqlalchemy.orm import relationship
from Context.common import common_db
from sqlalchemy import Column, Integer, String, ForeignKey, Text, DateTime, func
class CompanyMeetingRecord(common_db.Base):
"""
历史上会记录表
"""
__tablename__ = "company_meeting_record"
id = Column(Integer, primary_key=True)
company_id = Column(Integer, comment="企业ID")
metting_time = Column(DateTime, comment="企业ID")
project_type = Column(String(255), comment="项目类型")
result = Column(Text, comment="上会意见")
def to_dict(self):
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}
return data

View File

@ -0,0 +1,43 @@
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from Context.common import common_db
from . import Schemas
from . import Crud
router = APIRouter(tags=["历史上会记录"])
@router.post("/company_meeting_record/add", summary="添加历史上会记录", response_model=Schemas.CompanyMeetingRecordAddRes)
def company_meeting_record_add(req: Schemas.CompanyMeetingRecordAddReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_meeting_record_add(db, req)
return Schemas.CompanyMeetingRecordAddRes(**item.to_dict())
@router.post("/company_meeting_record/delete", summary="删除历史上会记录")
def company_meeting_record_delete(req: Schemas.CompanyMeetingRecordDeleteReq, db: Session = Depends(common_db.get_db)):
Crud.company_meeting_record_delete(db, req.id)
return "删除成功"
@router.post("/company_meeting_record/update", summary="更新历史上会记录", response_model=Schemas.CompanyMeetingRecordUpdateRes)
def company_meeting_record_update(req: Schemas.CompanyMeetingRecordUpdateReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_meeting_record_update(db, req)
return Schemas.CompanyMeetingRecordUpdateRes(**item.to_dict())
@router.post("/company_meeting_record/get", summary="获取历史上会记录", response_model=Schemas.CompanyMeetingRecordGetRes)
def company_meeting_record_get(req: Schemas.CompanyMeetingRecordGetReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_meeting_record_get(db, req.id)
if not item:
raise HTTPException(detail="未查询到信息", status_code=404)
return Schemas.CompanyMeetingRecordGetRes(**item.to_dict())
@router.post("/company_meeting_record/query", summary="查询历史上会记录", response_model=Schemas.CompanyMeetingRecordQueryRes)
def company_meeting_record_query(req: Schemas.CompanyMeetingRecordQueryReq, db: Session = Depends(common_db.get_db)):
count, query = Crud.company_meeting_record_query(db, req)
items = [Schemas.CompanyMeetingRecordInfo(**item.to_dict()) for item in query]
return Schemas.CompanyMeetingRecordQueryRes(count=count, items=items)
#########

View File

@ -0,0 +1,65 @@
from datetime import datetime
from pydantic import BaseModel
from typing import Optional, List
class CompanyMeetingRecordInfo(BaseModel):
id: Optional[int]
company_id: Optional[int]
metting_time: Optional[datetime]
project_type: Optional[str]
result: Optional[str]
class CompanyMeetingRecordAddInfo(BaseModel):
company_id: int
metting_time: Optional[datetime]
project_type: Optional[str]
result: Optional[str]
class CompanyMeetingRecordAddReq(CompanyMeetingRecordAddInfo):
pass
class CompanyMeetingRecordAddRes(CompanyMeetingRecordInfo):
pass
class CompanyMeetingRecordUpdateInfo(CompanyMeetingRecordInfo):
pass
class CompanyMeetingRecordUpdateReq(CompanyMeetingRecordUpdateInfo):
pass
class CompanyMeetingRecordUpdateRes(CompanyMeetingRecordInfo):
pass
class CompanyMeetingRecordQuery(CompanyMeetingRecordInfo):
pass
class CompanyMeetingRecordQueryReq(CompanyMeetingRecordQuery):
pass
class CompanyMeetingRecordGetReq(BaseModel):
id: int
class CompanyMeetingRecordGetRes(CompanyMeetingRecordInfo):
pass
class CompanyMeetingRecordQueryRes(BaseModel):
count: int
items: List[CompanyMeetingRecordInfo]
class CompanyMeetingRecordDeleteReq(BaseModel):
id: int
#######################

View File

@ -0,0 +1,56 @@
from sqlalchemy.orm import Session
from . import Schemas
from .Models import CompanyScore
def company_score_add(db: Session, data: Schemas.CompanyScoreAddInfo):
item = CompanyScore(**data.dict())
db.add(item)
db.commit()
db.refresh(item)
return item
def company_score_delete(db: Session, item_id: int):
db.query(CompanyScore).filter_by(id=item_id).delete()
db.commit()
def company_score_update(db: Session, data: Schemas.CompanyScoreUpdateInfo):
db.query(CompanyScore).filter_by(id=data.id).update({key: v for key, v in data.dict().items() if v is not None})
db.commit()
item = db.query(CompanyScore).filter_by(id=data.id).first()
return item
def company_score_get(db: Session, item_id: int):
item = db.query(CompanyScore).filter_by(id=item_id).first()
return item
def company_score_query(db: Session, params: Schemas.CompanyScoreQuery):
params_dict = params.dict()
query = db.query(CompanyScore)
db_model = CompanyScore
for key, value in params_dict.items():
if key not in ['page', 'page_size'] and value is not None:
if type(value) == str:
query = query.filter(getattr(db_model, key).like(f'%{value}%'))
elif type(value) in [int, float, bool]:
query = query.filter_by(**{key: value})
else:
query = query.filter(getattr(db_model, key) == value)
count = query.count()
page = None
page_size = None
if 'page' in params_dict:
page = params_dict['page']
if 'page_size' in params_dict:
page_size = params_dict['page_size']
# 页数不超过100
page_size = min(page_size, 100)
if page is not None and page_size is not None:
query = query.offset((page - 1) * page_size).limit(page_size).all()
return count, query
################

View File

@ -0,0 +1,22 @@
from sqlalchemy.orm import relationship
from Context.common import common_db
from sqlalchemy import Column, Double, Integer, String, ForeignKey, Text, DateTime, func
class CompanyScore(common_db.Base):
"""
打分记录表
"""
__tablename__ = "company_score"
id = Column(Integer, primary_key=True)
company_id = Column(Integer, comment="企业ID")
rating = Column(String(255), comment="级别")
score = Column(Double, comment="分数")
input = Column(Double, comment="入参参数")
output = Column(Double, comment="结果明细")
add_time = Column(DateTime, comment="打分时间")
add_user = Column(String(255), comment="填报人")
def to_dict(self):
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}
return data

View File

@ -0,0 +1,43 @@
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from Context.common import common_db
from . import Schemas
from . import Crud
router = APIRouter(tags=["打分记录"])
@router.post("/company_score/add", summary="添加打分记录", response_model=Schemas.CompanyScoreAddRes)
def company_score_add(req: Schemas.CompanyScoreAddReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_score_add(db, req)
return Schemas.CompanyScoreAddRes(**item.to_dict())
@router.post("/company_score/delete", summary="删除打分记录")
def company_score_delete(req: Schemas.CompanyScoreDeleteReq, db: Session = Depends(common_db.get_db)):
Crud.company_score_delete(db, req.id)
return "删除成功"
@router.post("/company_score/update", summary="更新打分记录", response_model=Schemas.CompanyScoreUpdateRes)
def company_score_update(req: Schemas.CompanyScoreUpdateReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_score_update(db, req)
return Schemas.CompanyScoreUpdateRes(**item.to_dict())
@router.post("/company_score/get", summary="获取打分记录", response_model=Schemas.CompanyScoreGetRes)
def company_score_get(req: Schemas.CompanyScoreGetReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_score_get(db, req.id)
if not item:
raise HTTPException(detail="未查询到信息", status_code=404)
return Schemas.CompanyScoreGetRes(**item.to_dict())
@router.post("/company_score/query", summary="查询打分记录", response_model=Schemas.CompanyScoreQueryRes)
def company_score_query(req: Schemas.CompanyScoreQueryReq, db: Session = Depends(common_db.get_db)):
count, query = Crud.company_score_query(db, req)
items = [Schemas.CompanyScoreInfo(**item.to_dict()) for item in query]
return Schemas.CompanyScoreQueryRes(count=count, items=items)
#########

View File

@ -0,0 +1,71 @@
from datetime import datetime
from pydantic import BaseModel
from typing import Optional, List
class CompanyScoreInfo(BaseModel):
id: Optional[int]
company_id: Optional[int]
rating: Optional[str]
score: Optional[float]
input: Optional[str]
output: Optional[str]
add_time: Optional[datetime]
add_user: Optional[str]
class CompanyScoreAddInfo(BaseModel):
company_id: int
rating: Optional[str]
score: Optional[float]
input: Optional[str]
output: Optional[str]
add_time: Optional[datetime]
add_user: Optional[str]
class CompanyScoreAddReq(CompanyScoreAddInfo):
pass
class CompanyScoreAddRes(CompanyScoreInfo):
pass
class CompanyScoreUpdateInfo(CompanyScoreInfo):
pass
class CompanyScoreUpdateReq(CompanyScoreUpdateInfo):
pass
class CompanyScoreUpdateRes(CompanyScoreInfo):
pass
class CompanyScoreQuery(CompanyScoreInfo):
pass
class CompanyScoreQueryReq(CompanyScoreQuery):
pass
class CompanyScoreGetReq(BaseModel):
id: int
class CompanyScoreGetRes(CompanyScoreInfo):
pass
class CompanyScoreQueryRes(BaseModel):
count: int
items: List[CompanyScoreInfo]
class CompanyScoreDeleteReq(BaseModel):
id: int
#######################

View File

@ -0,0 +1,15 @@
from fastapi import APIRouter, Depends
from .Mods.CompanyScore import Router as CompanyScoreRouter
from .Mods.CompanyConclusion import Router as CompanyConclusionRouter
from .Mods.CompanyMeetingRecord import Router as CompanyMeetingRecordRouter
from Context.common import auth_util
router = APIRouter(
prefix="/indepth_research",
dependencies=[Depends(auth_util.token_data_depend)]
)
router.include_router(CompanyScoreRouter.router)
router.include_router(CompanyConclusionRouter.router)
router.include_router(CompanyMeetingRecordRouter.router)

View File

View File

@ -1,8 +1,8 @@
if(!window.fetchOrg){ if(!window.fetchOrg){
window.fetchOrg = window.fetch window.fetchOrg = window.fetch
} }
var token = var token ="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Ind1Y2h1bnF1YW5AZmVjci5jb20uY24iLCJuYW1lIjoiXHU0ZjBkXHU2NjI1XHU1MTY4IiwicmVnaXN0ZXJlZCI6ZmFsc2UsImF1dGhfZGF0YSI6Ilx1NzgxNFx1NTNkMVx1OTBlOFx1OTVlOCIsImRlcGFydG1lbnQiOiIxOCIsInBvc3QiOiI2MCIsImV4cCI6MTY4MDE1NjEzN30.GGYL3bsYfLNmwvWf__dz1N9Ctqcp0aZM1RPxaUNGhF4"
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Ind1Y2h1bnF1YW5AZmVjci5jb20uY24iLCJuYW1lIjoiXHU0ZjBkXHU2NjI1XHU1MTY4IiwicmVnaXN0ZXJlZCI6ZmFsc2UsImF1dGhfZGF0YSI6Ilx1NzgxNFx1NTNkMVx1OTBlOFx1OTVlOCIsImRlcGFydG1lbnQiOiIxOCIsInBvc3QiOiI2MCIsImV4cCI6MTY3OTY0MDE5M30.c5eNmtVfg9sv5AWkJB3AfeZosVPuPSIg0Bn3SH3Kq10"
var fetchHook = (...args) => { var fetchHook = (...args) => {
if (args.length > 1) { if (args.length > 1) {
if (args[1]["headers"]) { if (args[1]["headers"]) {

View File

@ -11,6 +11,7 @@ from Mods.BasicInformation import Router as BasicInformationRouter
from Mods.OtherInformation import Router as OtherInformationRouter from Mods.OtherInformation import Router as OtherInformationRouter
from Mods.CommonInformation import Router as CommonInformationRouter from Mods.CommonInformation import Router as CommonInformationRouter
from Mods.RegionalEconomies import Router as RegionalEconomiesRouter from Mods.RegionalEconomies import Router as RegionalEconomiesRouter
from Mods.IndepthResearch import Router as IndepthResearchRouter
from Utils.RecordUtils import record_middleware from Utils.RecordUtils import record_middleware
# 只需引用一次,后面将其注释 # 只需引用一次,后面将其注释
# import init # import init
@ -40,6 +41,8 @@ app.include_router(BasicInformationRouter.router)
app.include_router(OtherInformationRouter.router) app.include_router(OtherInformationRouter.router)
app.include_router(CommonInformationRouter.router) app.include_router(CommonInformationRouter.router)
app.include_router(RegionalEconomiesRouter.router) app.include_router(RegionalEconomiesRouter.router)
app.include_router(RegionalEconomiesRouter.router)
app.include_router(IndepthResearchRouter.router)
print(f"http://127.0.0.1:{conf['app']['port']}{app.docs_url}") print(f"http://127.0.0.1:{conf['app']['port']}{app.docs_url}")
if __name__ == '__main__': 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']))