编写财务报表的增删改查

This commit is contained in:
wcq 2023-03-21 14:34:38 +08:00
parent c0f6e43342
commit 8307a1e74f
35 changed files with 1031 additions and 142 deletions

View File

@ -28,11 +28,11 @@ url = https://smsapi.cn-north-4.myhuaweicloud.com:443/sms/batchSendSms/v1
app_key = 3h499M186sTF8046f9J9I28J1L9m
app_secret = TMCaZWxoMbuW55l27zdxoDfsiKAH
# 国内短信签名通道号或国际/港澳台短信通道号
sender = 1069368924410005073
sender = 8823032033987
# 模板ID
template_id = 527eb7a7b95f4466834347adbde6d53e
template_id = 2e129e3ad70d4ccaa8cbadf528d69c3a
# 签名名称
signature = 华为云短信测试
signature = 远东资信
# 选填,短信状态报告接收地址,推荐使用域名,为空或者不填表示不接收状态报告
status_call_back = ""

View File

@ -5,7 +5,6 @@ from bson import ObjectId
from Utils.MongoUtils import pydantic_to_mg_dict
from . import Schemas
from .Models import CompanyFinance
def format_id(obj: dict):
@ -14,36 +13,35 @@ def format_id(obj: dict):
return obj
def company_finance_add(db: Database, data: Schemas.CompanyFinanceAddInfo):
col = db[CompanyFinance.__tablename__]
data_dict = pydantic_to_mg_dict(data)
new_item = col.insert_one(data_dict)
data_dict['id'] = str(new_item.inserted_id)
return data_dict
def company_finance_add(db: Database, type_name, data):
col = db[type_name]
new_item = col.insert_one(data)
data['id'] = str(new_item.inserted_id)
return data
def company_finance_delete(db: Database, item_id: str):
col = db[CompanyFinance.__tablename__]
def company_finance_delete(db: Database, type_name, item_id: str):
col = db[type_name]
col.delete_one({"_id": ObjectId(item_id)})
def company_finance_update(db: Database, data: Schemas.CompanyFinanceUpdateInfo):
col = db[CompanyFinance.__tablename__]
col.update_one({"_id": ObjectId(data.id)}, {"$set": pydantic_to_mg_dict(data)})
item = col.find_one({"_id": ObjectId(data.id)})
def company_finance_update(db: Database, type_name, data):
col = db[type_name]
col.update_one({"_id": ObjectId(data["id"])}, {"$set": data})
item = col.find_one({"_id": ObjectId(data["id"])})
format_id(item)
return item
def company_finance_get(db: Database, item_id: str):
col = db[CompanyFinance.__tablename__]
def company_finance_get(db: Database, type_name, item_id: str):
col = db[type_name]
item = col.find_one({"_id": ObjectId(item_id)})
format_id(item)
return item
def company_finance_query(db: Database, params: Schemas.CompanyFinanceQuery):
col = db[CompanyFinance.__tablename__]
def company_finance_query(db: Database, type_name, params):
col = db[type_name]
params_dict = json.loads(params.json())
find_params = {}
for key, value in params_dict.items():

View File

@ -1,17 +1 @@
import uuid
from pydantic import BaseModel, Field
from datetime import date, datetime
from typing import Optional
class CompanyFinance(BaseModel):
"""
财务报表配置表
"""
__tablename__ = "company_finance"
id: Optional[str] = Field(alias="_id")
名称: Optional[str]
: Optional[str]
日期: Optional[datetime]
时间: Optional[datetime]

View File

@ -8,10 +8,10 @@ from . import Crud
router = APIRouter(tags=["财务报表"])
@router.post("/company_finance/add", summary="添加财务报表", response_model=Schemas.CompanyFinanceAddRes)
@router.post("/company_finance/add", summary="添加财务报表")
def company_finance_query(req: Schemas.CompanyFinanceAddReq, db: Session = Depends(mg_db.get_db)):
item = Crud.company_finance_add(db, req)
return Schemas.CompanyFinanceAddRes(**item)
return item
@router.post("/company_finance/delete", summary="删除财务报表")
@ -20,18 +20,18 @@ def company_finance_delete(req: Schemas.CompanyFinanceDeleteReq, db: Session = D
return "删除成功"
@router.post("/company_finance/update", summary="更新财务报表", response_model=Schemas.CompanyFinanceUpdateRes)
@router.post("/company_finance/update", summary="更新财务报表")
def company_finance_update(req: Schemas.CompanyFinanceUpdateReq, db: Session = Depends(mg_db.get_db)):
item = Crud.company_finance_update(db, req)
return Schemas.CompanyFinanceUpdateRes(**item)
item = Crud.company_finance_update(db, req.type, req.data)
return item
@router.post("/company_finance/get", summary="获取财务报表", response_model=Schemas.CompanyFinanceGetRes)
@router.post("/company_finance/get", summary="获取财务报表")
def company_finance_get(req: Schemas.CompanyFinanceGetReq, db: Session = Depends(mg_db.get_db)):
item = Crud.company_finance_get(db, req.id)
item = Crud.company_finance_get(db, req.type, req.id)
if not item:
raise HTTPException(detail="未查询到信息", status_code=404)
return Schemas.CompanyFinanceGetRes(**item)
return item
@router.post("/company_finance/query", summary="查询财务报表", response_model=Schemas.CompanyFinanceQueryRes)

View File

@ -1,45 +1,25 @@
from datetime import date, datetime
from pydantic import BaseModel
from typing import Optional, List
from pydantic import BaseModel, Field
from typing import Optional, List, Literal
FinanceType=Literal['资产负债表', '利润表', '现金流量表', '补充数据表']
class CompanyFinanceInfo(BaseModel):
id: Optional[str]
名称: Optional[str]
: Optional[str]
日期: Optional[date]
时间: Optional[datetime]
class FinanceMongoTableData(BaseModel):
data= {}
type: FinanceType
class CompanyFinanceAddInfo(BaseModel):
名称: Optional[str]
: Optional[str]
日期: Optional[date]
时间: Optional[datetime]
class CompanyFinanceAddReq(CompanyFinanceAddInfo):
class CompanyFinanceAddReq(FinanceMongoTableData):
pass
class CompanyFinanceAddRes(CompanyFinanceInfo):
class CompanyFinanceUpdateReq(FinanceMongoTableData):
pass
class CompanyFinanceUpdateInfo(CompanyFinanceInfo):
pass
class CompanyFinanceUpdateReq(CompanyFinanceUpdateInfo):
pass
class CompanyFinanceUpdateRes(CompanyFinanceInfo):
pass
class CompanyFinanceQuery(CompanyFinanceInfo):
class CompanyFinanceQuery(FinanceMongoTableData):
pass
@ -48,19 +28,17 @@ class CompanyFinanceQueryReq(CompanyFinanceQuery):
class CompanyFinanceGetReq(BaseModel):
type: FinanceType
id: str
class CompanyFinanceGetRes(CompanyFinanceInfo):
pass
class CompanyFinanceQueryRes(BaseModel):
count: int
items: List[CompanyFinanceInfo]
items: List[dict]
class CompanyFinanceDeleteReq(BaseModel):
id: str
type: FinanceType
#######################

View File

@ -0,0 +1,349 @@
{
"资产负债表": {
"报告时间": "date",
"报告期": "date",
"报表类型": "str",
"货币资金": "float",
"交易性金融资产": "float",
"衍生金融资产": "float",
"应收票据及应收账款": "float",
"应收票据": "float",
"应收账款": "float",
"应收款项融资": "float",
"预付款项": "float",
"其他应收款(合计)": "float",
"应收股利": "float",
"应收利息": "float",
"其他应收款": "float",
"买入返售金融资产": "float",
"存货": "float",
"其中:消耗性生物资产": "float",
"合同资产": "float",
"划分为持有待售的资产": "float",
"一年内到期的非流动资产": "float",
"待摊费用": "float",
"其他流动资产": "float",
"其他金融类流动资产": "float",
"结算备付金": "float",
"拆出资金": "float",
"应收保费": "float",
"应收分保账款": "float",
"应收分保合同准备金": "float",
"流动资产差额(特殊报表科目)": "float",
"流动资产差额(合计平衡项目)": "float",
"流动资产合计": "float",
"发放贷款及垫款": "float",
"以公允价值且其变动计入其他综合收益的金融资产": "float",
"以摊余成本计量的金融资产": "float",
"债权投资": "float",
"其他债权投资": "float",
"可供出售金融资产": "float",
"其他权益工具投资": "float",
"持有至到期投资": "float",
"其他非流动金融资产": "float",
"长期应收款": "float",
"长期股权投资": "float",
"投资性房地产": "float",
"固定资产(合计)": "float",
"固定资产": "float",
"固定资产清理": "float",
"在建工程(合计)": "float",
"在建工程": "float",
"工程物资": "float",
"生产性生物资产": "float",
"油气资产": "float",
"使用权资产": "float",
"无形资产": "float",
"开发支出": "float",
"商誉": "float",
"长期待摊费用": "float",
"递延所得税资产": "float",
"其他非流动资产": "float",
"非流动资产差额(特殊报表科目)": "float",
"非流动资产差额(合计平衡项目)": "float",
"非流动资产合计": "float",
"资产差额(特殊报表科目)": "float",
"资产差额(合计平衡项目)": "float",
"资产总计": "float",
"短期借款": "float",
"交易性金融负债": "float",
"衍生金融负债": "float",
"应付票据及应付账款": "float",
"应付票据": "float",
"应付账款": "float",
"预收款项": "float",
"合同负债": "float",
"应付手续费及佣金": "float",
"应付职工薪酬": "float",
"应交税费": "float",
"其他应付款(合计)": "float",
"应付利息": "float",
"应付股利": "float",
"其他应付款": "float",
"划分为持有待售的负债": "float",
"一年内到期的非流动负债": "float",
"预提费用": "float",
"递延收益-流动负债": "float",
"应付短期债券": "float",
"其他流动负债": "float",
"其他金融类流动负债": "float",
"向中央银行借款": "float",
"吸收存款及同业存放": "float",
"拆入资金": "float",
"卖出回购金融资产款": "float",
"应付分保账款": "float",
"保险合同准备金": "float",
"代理买卖证券款": "float",
"代理承销证券款": "float",
"流动负债差额(特殊报表科目)": "float",
"流动负债差额(合计平衡项目)": "float",
"流动负债合计": "float",
"长期借款": "float",
"应付债券": "float",
"租赁负债": "float",
"长期应付款(合计)": "float",
"长期应付款": "float",
"专项应付款": "float",
"长期应付职工薪酬": "float",
"预计负债": "float",
"递延所得税负债": "float",
"递延收益-非流动负债": "float",
"其他非流动负债": "float",
"非流动负债差额(特殊报表科目)": "float",
"非流动负债差额(合计平衡项目)": "float",
"非流动负债合计": "float",
"负债差额(特殊报表科目)": "float",
"负债差额(合计平衡项目)": "float",
"负债合计": "float",
"实收资本(或股本)": "float",
"其它权益工具": "float",
"其中:优先股": "float",
"永续债": "float",
"资本公积金": "float",
"减:库存股": "float",
"其它综合收益": "float",
"专项储备": "float",
"盈余公积金": "float",
"一般风险准备": "float",
"未分配利润": "float",
"外币报表折算差额": "float",
"未确认的投资损失": "float",
"股东权益差额(特殊报表科目)": "float",
"股权权益差额(合计平衡项目)": "float",
"归属于母公司所有者权益合计": "float",
"少数股东权益": "float",
"所有者权益合计": "float",
"负债及股东权益差额(特殊报表项目)": "float",
"负债及股东权益差额(合计平衡项目)": "float",
"负债和所有者权益总计": "float",
"显示币种": "float",
"原始币种": "float",
"转换汇率": "float",
"利率类型": "float",
"税率": "float",
"税率说明": "float",
"审计意见(境内)": "float",
"审计意见(境外)": "float",
"调整原因": "float",
"调整说明": "float",
"公告日期": "float",
"数据来源": "float"
},
"现金流量表": {
"报告时间": "float",
"报告期": "float",
"报表类型": "float",
"销售商品、提供劳务收到的现金": "float",
"收到的税费返还": "float",
"收到其他与经营活动有关的现金": "float",
"经营活动现金流入(金融类)": "float",
"保户储金净增加额": "float",
"客户存款和同业存放款项净增加额": "float",
"向中央银行借款净增加额": "float",
"向其他金融机构拆入资金净增加额": "float",
"收取利息和手续费净增加额": "float",
"收到原保险合同保费取得的现金": "float",
"收到再保业务现金净额": "float",
"处置交易性金融资产净增加额": "float",
"拆入资金净增加额": "float",
"回购业务资金净增加额": "float",
"经营活动现金流入差额(特殊报表科目)": "float",
"经营活动现金流入差额(合计平衡项目)": "float",
"经营活动现金流入小计": "float",
"购买商品、接受劳务支付的现金": "float",
"支付给职工以及为职工支付的现金": "float",
"支付的各项税费": "float",
"支付其他与经营活动有关的现金": "float",
"经营活动现金流出(金融类)": "float",
"客户贷款及垫款净增加额": "float",
"存放央行和同业款项净增加额": "float",
"支付原保险合同赔付款项的现金": "float",
"支付手续费的现金": "float",
"支付保单红利的现金": "float",
"经营活动现金流出差额(特殊报表科目)": "float",
"经营活动现金流出差额(合计平衡项目)": "float",
"经营活动现金流出小计": "float",
"经营活动产生的现金流量净额差额(合计平衡项目)": "float",
"经营活动产生的现金流量净额": "float",
"收回投资收到的现金": "float",
"取得投资收益收到的现金": "float",
"处置固定资产、无形资产和其他长期资产收回的现金净额": "float",
"处置子公司及其他营业单位收到的现金净额": "float",
"收到其他与投资活动有关的现金": "float",
"投资活动现金流入差额(特殊报表科目)": "float",
"投资活动现金流入差额(合计平衡项目)": "float",
"投资活动现金流入小计": "float",
"购建固定资产、无形资产和其他长期资产支付的现金": "float",
"投资支付的现金": "float",
"取得子公司及其他营业单位支付的现金净额": "float",
"支付其他与投资活动有关的现金": "float",
"投资活动现金流出差额(特殊报表科目)": "float",
"投资活动现金流出差额(合计平衡项目)": "float",
"投资活动现金流出小计": "float",
"投资活动产生的现金流量净额差额(合计平衡项目)": "float",
"投资活动产生的现金流量净额": "float",
"吸收投资收到的现金": "float",
"其中:子公司吸收少数股东投资收到的现金": "float",
"取得借款收到的现金": "float",
"收到其他与筹资活动有关的现金": "float",
"发行债券收到的现金": "float",
"筹资活动现金流入差额(特殊报表科目)": "float",
"筹资活动现金流入差额(合计平衡项目)": "float",
"筹资活动现金流入小计": "float",
"偿还债务支付的现金": "float",
"分配股利、利润或偿付利息支付的现金": "float",
"其中:子公司支付给少数股东的股利、利润": "float",
"支付其他与筹资活动有关的现金": "float",
"筹资活动现金流出差额(特殊报表科目)": "float",
"筹资活动现金流出差额(合计平衡项目)": "float",
"筹资活动现金流出小计": "float",
"筹资活动产生的现金流量净额差额(合计平衡项目)": "float",
"筹资活动产生的现金流量净额": "float",
"汇率变动对现金的影响": "float",
"直接法-现金及现金等价物净增加额差额(特殊报表科目)": "float",
"直接法-现金及现金等价物净增加额差额(合计平衡项目)": "float",
"现金及现金等价物净增加额": "float",
"期初现金及现金等价物余额": "float",
"期末现金及现金等价物余额": "float",
"净利润": "float",
"加:资产减值准备": "float",
"信用减值损失": "float",
"固定资产折旧、油气资产折耗、生产性生物资产折旧": "float",
"无形资产摊销": "float",
"使用权资产折旧": "float",
"长期待摊费用摊销": "float",
"待摊费用减少": "float",
"预提费用增加": "float",
"处置固定资产、无形资产和其他长期资产的损失": "float",
"固定资产报废损失": "float",
"公允价值变动损失": "float",
"财务费用": "float",
"投资损失": "float",
"递延所得税资产减少": "float",
"递延所得税负债增加": "float",
"存货的减少": "float",
"经营性应收项目的减少": "float",
"经营性应付项目的增加": "float",
"未确认的投资损失": "float",
"其他": "float",
"间接法-经营活动现金流量净额差额(特殊报表科目)": "float",
"间接法-经营活动现金流量净额差额(合计平衡项目)": "float",
"间接法-经营活动产生的现金流量净额": "float",
"债务转为资本": "float",
"一年内到期的可转换公司债券": "float",
"融资租入固定资产": "float",
"现金的期末余额": "float",
"减:现金的期初余额": "float",
"加:现金等价物的期末余额": "float",
"减:现金等价物的期初余额": "float",
"加:间接法-现金净增加额差额(特殊报表科目)": "float",
"间接法-现金净增加额差额(合计平衡项目)": "float",
"间接法-现金及现金等价物净增加额": "float",
"显示币种": "float",
"原始币种": "float",
"转换汇率": "float",
"利率类型": "float",
"税率": "float",
"税率说明": "float",
"审计意见(境内)": "float",
"审计意见(境外)": "float",
"调整原因": "float",
"调整说明": "float",
"公告日期": "float",
"数据来源": "float"
},
"利润表": {
"报告时间": "float",
"报告期": "float",
"报表类型": "float",
"营业总收入": "float",
"营业收入": "float",
"其他类金融业务收入": "float",
"利息收入": "float",
"已赚保费": "float",
"手续费及佣金收入": "float",
"营业总成本": "float",
"营业成本": "float",
"营业税金及附加": "float",
"销售费用": "float",
"管理费用": "float",
"研发费用": "float",
"财务费用": "float",
"其中:利息费用": "float",
"减:利息收入": "float",
"其他业务成本(金融类)": "float",
"利息支出": "float",
"手续费及佣金支出": "float",
"退保金": "float",
"赔付支出净额": "float",
"提取保险合同准备金净额": "float",
"保单红利支出": "float",
"分保费用": "float",
"加:其他收益": "float",
"投资净收益": "float",
"其中:对联营企业和合营企业的投资收益": "float",
"以摊余成本计量的金融资产终止确认收益": "float",
"净敞口套期收益": "float",
"公允价值变动净收益": "float",
"资产减值损失": "float",
"信用减值损失": "float",
"资产处置收益": "float",
"汇兑净收益": "float",
"加:营业利润差额(特殊报表科目)": "float",
"营业利润差额(合计平衡项目)": "float",
"营业利润": "float",
"加:营业外收入": "float",
"减:营业外支出": "float",
"其中:非流动资产处置净损失": "float",
"加:利润总额差额(特殊报表科目)": "float",
"利润总额差额(合计平衡项目)": "float",
"利润总额": "float",
"减:所得税": "float",
"加:未确认的投资损失": "float",
"加:净利润差额(特殊报表科目)": "float",
"净利润差额(合计平衡项目)": "float",
"净利润": "float",
"持续经营净利润": "float",
"终止经营净利润": "float",
"减:少数股东损益": "float",
"归属于母公司所有者的净利润": "float",
"加:其他综合收益": "float",
"综合收益总额": "float",
"减:归属于少数股东的综合收益总额": "float",
"归属于母公司普通股东综合收益总额": "float",
"基本每股收益": "float",
"稀释每股收益": "float",
"显示币种": "float",
"原始币种": "float",
"转换汇率": "float",
"利率类型": "float",
"税率": "float",
"税率说明": "float",
"审计意见(境内)": "float",
"审计意见(境外)": "float",
"调整原因": "float",
"调整说明": "float",
"公告日期": "float",
"数据来源": "float"
}
}

View File

@ -0,0 +1,57 @@
from sqlalchemy.orm import Session
from . import Schemas
from .Models import CompanyFinancialStatement
def company_financial_statement_add(db: Session, data: Schemas.CompanyFinancialStatementAddInfo):
item = CompanyFinancialStatement(**data.dict())
db.add(item)
db.commit()
db.refresh(item)
return item
def company_financial_statement_delete(db: Session, item_id: int):
db.query(CompanyFinancialStatement).filter_by(id=item_id).delete()
db.commit()
def company_financial_statement_update(db: Session, data: Schemas.CompanyFinancialStatementUpdateInfo):
db.query(CompanyFinancialStatement).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(CompanyFinancialStatement).filter_by(id=data.id).first()
return item
def company_financial_statement_get(db: Session, item_id: int):
item = db.query(CompanyFinancialStatement).filter_by(id=item_id).first()
return item
def company_financial_statement_query(db: Session, params: Schemas.CompanyFinancialStatementQuery):
params_dict = params.dict()
query = db.query(CompanyFinancialStatement)
db_model = CompanyFinancialStatement
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,21 @@
from sqlalchemy.orm import relationship
from Context.common import common_db
from sqlalchemy import Column, Integer, String, ForeignKey, Text, DateTime, func
class CompanyFinancialStatement(common_db.Base):
"""
财务说明表
"""
__tablename__ = "company_financial_statement"
id = Column(Integer,primary_key=True)
company_id = Column(Integer, comment="企业ID")
year = Column(Integer, comment="年度")
assets = Column(Text, comment="资产说明")
debt = Column(Text, comment="负债说明")
rights = Column(Text, comment="权益说明")
analysts = Column(String(128), 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_financial_statement/add", summary="添加财务说明", response_model=Schemas.CompanyFinancialStatementAddRes)
def company_financial_statement_add(req: Schemas.CompanyFinancialStatementAddReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_financial_statement_add(db, req)
return Schemas.CompanyFinancialStatementAddRes(**item.to_dict())
@router.post("/company_financial_statement/delete", summary="删除财务说明")
def company_financial_statement_delete(req: Schemas.CompanyFinancialStatementDeleteReq, db: Session = Depends(common_db.get_db)):
Crud.company_financial_statement_delete(db, req.id)
return "删除成功"
@router.post("/company_financial_statement/update", summary="更新财务说明", response_model=Schemas.CompanyFinancialStatementUpdateRes)
def company_financial_statement_update(req: Schemas.CompanyFinancialStatementUpdateReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_financial_statement_update(db, req)
return Schemas.CompanyFinancialStatementUpdateRes(**item.to_dict())
@router.post("/company_financial_statement/get", summary="获取财务说明", response_model=Schemas.CompanyFinancialStatementGetRes)
def company_financial_statement_get(req: Schemas.CompanyFinancialStatementGetReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_financial_statement_get(db, req.id)
if not item:
raise HTTPException(detail="未查询到信息", status_code=404)
return Schemas.CompanyFinancialStatementGetRes(**item.to_dict())
@router.post("/company_financial_statement/query", summary="查询财务说明", response_model=Schemas.CompanyFinancialStatementQueryRes)
def company_financial_statement_query(req: Schemas.CompanyFinancialStatementQueryReq, db: Session = Depends(common_db.get_db)):
count, query = Crud.company_financial_statement_query(db, req)
items = [Schemas.CompanyFinancialStatementInfo(**item.to_dict()) for item in query]
return Schemas.CompanyFinancialStatementQueryRes(count=count, items=items)
#########

View File

@ -0,0 +1,69 @@
from datetime import datetime
from pydantic import BaseModel
from typing import Optional, List
class CompanyFinancialStatementInfo(BaseModel):
id: Optional[int]
company_id: Optional[int]
year: Optional[int]
assets: Optional[str]
debt: Optional[str]
rights: Optional[str]
analysts: Optional[str]
class CompanyFinancialStatementAddInfo(BaseModel):
company_id: int
year: Optional[int]
assets: Optional[str]
debt: Optional[str]
rights: Optional[str]
analysts: Optional[str]
class CompanyFinancialStatementAddReq(CompanyFinancialStatementAddInfo):
pass
class CompanyFinancialStatementAddRes(CompanyFinancialStatementInfo):
pass
class CompanyFinancialStatementUpdateInfo(CompanyFinancialStatementInfo):
pass
class CompanyFinancialStatementUpdateReq(CompanyFinancialStatementUpdateInfo):
pass
class CompanyFinancialStatementUpdateRes(CompanyFinancialStatementInfo):
pass
class CompanyFinancialStatementQuery(CompanyFinancialStatementInfo):
pass
class CompanyFinancialStatementQueryReq(CompanyFinancialStatementQuery):
pass
class CompanyFinancialStatementGetReq(BaseModel):
id: int
class CompanyFinancialStatementGetRes(CompanyFinancialStatementInfo):
pass
class CompanyFinancialStatementQueryRes(BaseModel):
count: int
items: List[CompanyFinancialStatementInfo]
class CompanyFinancialStatementDeleteReq(BaseModel):
id: int
#######################

View File

@ -0,0 +1,57 @@
from sqlalchemy.orm import Session
from . import Schemas
from .Models import CompanyRestrictedAssets
def company_restricted_assets_add(db: Session, data: Schemas.CompanyRestrictedAssetsAddInfo):
item = CompanyRestrictedAssets(**data.dict())
db.add(item)
db.commit()
db.refresh(item)
return item
def company_restricted_assets_delete(db: Session, item_id: int):
db.query(CompanyRestrictedAssets).filter_by(id=item_id).delete()
db.commit()
def company_restricted_assets_update(db: Session, data: Schemas.CompanyRestrictedAssetsUpdateInfo):
db.query(CompanyRestrictedAssets).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(CompanyRestrictedAssets).filter_by(id=data.id).first()
return item
def company_restricted_assets_get(db: Session, item_id: int):
item = db.query(CompanyRestrictedAssets).filter_by(id=item_id).first()
return item
def company_restricted_assets_query(db: Session, params: Schemas.CompanyRestrictedAssetsQuery):
params_dict = params.dict()
query = db.query(CompanyRestrictedAssets)
db_model = CompanyRestrictedAssets
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 CompanyRestrictedAssets(common_db.Base):
"""
受限资产表
"""
__tablename__ = "company_restricted_assets"
id = Column(Integer, primary_key=True)
company_id = Column(Integer, comment="企业ID")
year = Column(Integer, comment="年度")
restricted_amount = Column(String(255), comment="受限资产量")
restricted_assets = 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_restricted_assets/add", summary="添加受限资产", response_model=Schemas.CompanyRestrictedAssetsAddRes)
def company_restricted_assets_add(req: Schemas.CompanyRestrictedAssetsAddReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_restricted_assets_add(db, req)
return Schemas.CompanyRestrictedAssetsAddRes(**item.to_dict())
@router.post("/company_restricted_assets/delete", summary="删除受限资产")
def company_restricted_assets_delete(req: Schemas.CompanyRestrictedAssetsDeleteReq, db: Session = Depends(common_db.get_db)):
Crud.company_restricted_assets_delete(db, req.id)
return "删除成功"
@router.post("/company_restricted_assets/update", summary="更新受限资产", response_model=Schemas.CompanyRestrictedAssetsUpdateRes)
def company_restricted_assets_update(req: Schemas.CompanyRestrictedAssetsUpdateReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_restricted_assets_update(db, req)
return Schemas.CompanyRestrictedAssetsUpdateRes(**item.to_dict())
@router.post("/company_restricted_assets/get", summary="获取受限资产", response_model=Schemas.CompanyRestrictedAssetsGetRes)
def company_restricted_assets_get(req: Schemas.CompanyRestrictedAssetsGetReq, db: Session = Depends(common_db.get_db)):
item = Crud.company_restricted_assets_get(db, req.id)
if not item:
raise HTTPException(detail="未查询到信息", status_code=404)
return Schemas.CompanyRestrictedAssetsGetRes(**item.to_dict())
@router.post("/company_restricted_assets/query", summary="查询受限资产", response_model=Schemas.CompanyRestrictedAssetsQueryRes)
def company_restricted_assets_query(req: Schemas.CompanyRestrictedAssetsQueryReq, db: Session = Depends(common_db.get_db)):
count, query = Crud.company_restricted_assets_query(db, req)
items = [Schemas.CompanyRestrictedAssetsInfo(**item.to_dict()) for item in query]
return Schemas.CompanyRestrictedAssetsQueryRes(count=count, items=items)
#########

View File

@ -0,0 +1,65 @@
from datetime import datetime
from pydantic import BaseModel
from typing import Optional, List
class CompanyRestrictedAssetsInfo(BaseModel):
id: Optional[int]
company_id: Optional[int]
year: Optional[int]
restricted_amount: Optional[str]
restricted_assets: Optional[str]
class CompanyRestrictedAssetsAddInfo(BaseModel):
company_id: int
year: Optional[int]
restricted_amount: Optional[str]
restricted_assets: Optional[str]
class CompanyRestrictedAssetsAddReq(CompanyRestrictedAssetsAddInfo):
pass
class CompanyRestrictedAssetsAddRes(CompanyRestrictedAssetsInfo):
pass
class CompanyRestrictedAssetsUpdateInfo(CompanyRestrictedAssetsInfo):
pass
class CompanyRestrictedAssetsUpdateReq(CompanyRestrictedAssetsUpdateInfo):
pass
class CompanyRestrictedAssetsUpdateRes(CompanyRestrictedAssetsInfo):
pass
class CompanyRestrictedAssetsQuery(CompanyRestrictedAssetsInfo):
pass
class CompanyRestrictedAssetsQueryReq(CompanyRestrictedAssetsQuery):
pass
class CompanyRestrictedAssetsGetReq(BaseModel):
id: int
class CompanyRestrictedAssetsGetRes(CompanyRestrictedAssetsInfo):
pass
class CompanyRestrictedAssetsQueryRes(BaseModel):
count: int
items: List[CompanyRestrictedAssetsInfo]
class CompanyRestrictedAssetsDeleteReq(BaseModel):
id: int
#######################

View File

@ -6,10 +6,12 @@ from .Mods.CompanyMainBusiness import Router as CompanyMainBusinessRouter
from .Mods.CompanyCreditRating import Router as CompanyCreditRatingRouter
from .Mods.CompanyJudicialCase import Router as CompanyJudicialCaseRouter
from .Mods.CompanyFinance import Router as CompanyFinanceRouter
from .Mods.CompanyFinancialStatement import Router as CompanyFinancialStatementRouter
from .Mods.CompanyRestrictedAssets import Router as CompanyRestrictedAssetsRouter
from Context.common import auth_util
router = APIRouter(prefix="/api/other_Information",
# dependencies=[Depends(auth_util.token_data_depend)]
dependencies=[Depends(auth_util.token_data_depend)]
)
router.include_router(CompanyBondRouter.router)
@ -19,3 +21,5 @@ router.include_router(CompanyMainBusinessRouter.router)
router.include_router(CompanyCreditRatingRouter.router)
router.include_router(CompanyJudicialCaseRouter.router)
router.include_router(CompanyFinanceRouter.router)
router.include_router(CompanyFinancialStatementRouter.router)
router.include_router(CompanyRestrictedAssetsRouter.router)

View File

@ -1,6 +1,6 @@
from sqlalchemy.orm import relationship
from Context.common import common_db
from sqlalchemy import Column, Integer, String, ForeignKey, Text, DateTime, func
from sqlalchemy import Column, Integer, String, Double, ForeignKey, Text, DateTime, func
class AreaDebt(common_db.Base):
@ -9,8 +9,20 @@ class AreaDebt(common_db.Base):
"""
__tablename__ = "area_debt"
id = Column(Integer, primary_key=True)
name = Column(String(255), comment="名称", nullable=False)
category = Column(String(255), comment="类别", nullable=False)
area_id = Column(Integer, comment="区域ID")
count_type = Column(Double, comment="统计类型")
count_value = Column(Double, comment="统计类型")
local_government_debt_balance = Column(Double, comment="地方政府债务余额(亿)")
local_government_debt_limit = Column(Double, comment="地方政府债务限额(亿)")
fiscal_self_sufficiency_rate = Column(Double, comment="财政自给率(%")
general_debt_balance = Column(Double, comment="一般债务余额(亿)")
special_debt_balance = Column(Double, comment="专项债务余额(亿)")
general_debt_limit = Column(Double, comment="一般债务限额(亿)")
special_debt_limit = Column(Double, comment="专项债务限额(亿)")
debt_ratio = Column(Double, comment="负债率(%")
broad_sense_debt_ratio = Column(Double, comment="负债率(宽口径)%")
debt_to_asset_ratio = Column(Double, comment="债务率(%")
broad_sense_debt_to_asset_ratio = Column(Double, comment="债务率(宽口径)%")
def to_dict(self):
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}

View File

@ -5,13 +5,37 @@ from typing import Optional, List
class AreaDebtInfo(BaseModel):
id: Optional[int]
name: Optional[str]
category: Optional[str]
area_id: Optional[int]
count_type: Optional[str]
count_value: Optional[str]
local_government_debt_balance: Optional[float]
local_government_debt_limit: Optional[float]
fiscal_self_sufficiency_rate: Optional[float]
general_debt_balance: Optional[float]
special_debt_balance: Optional[float]
general_debt_limit: Optional[float]
special_debt_limit: Optional[float]
debt_ratio: Optional[float]
broad_sense_debt_ratio: Optional[float]
debt_to_asset_ratio: Optional[float]
broad_sense_debt_to_asset_ratio: Optional[float]
class AreaDebtAddInfo(BaseModel):
name: str
category: str
area_id: int
count_type: Optional[str]
count_value: Optional[str]
local_government_debt_balance: Optional[float]
local_government_debt_limit: Optional[float]
fiscal_self_sufficiency_rate: Optional[float]
general_debt_balance: Optional[float]
special_debt_balance: Optional[float]
general_debt_limit: Optional[float]
special_debt_limit: Optional[float]
debt_ratio: Optional[float]
broad_sense_debt_ratio: Optional[float]
debt_to_asset_ratio: Optional[float]
broad_sense_debt_to_asset_ratio: Optional[float]
class AreaDebtAddReq(AreaDebtAddInfo):

View File

@ -1,6 +1,6 @@
from sqlalchemy.orm import relationship
from Context.common import common_db
from sqlalchemy import Column, Integer, String, ForeignKey, Text, DateTime, func
from sqlalchemy import Column, Integer, String, ForeignKey, Text, DateTime, func, Double
class AreaDepositsAndLoans(common_db.Base):
@ -9,8 +9,11 @@ class AreaDepositsAndLoans(common_db.Base):
"""
__tablename__ = "area_deposits_and_loans"
id = Column(Integer, primary_key=True)
name = Column(String(255), comment="名称", nullable=False)
category = Column(String(255), comment="类别", nullable=False)
area_id = Column(Integer, comment="区域ID")
count_type = Column(String(128), comment="统计类型")
count_value = Column(String(128), comment="统计时间")
deposit = Column(Double, comment="存款(亿)")
loan = Column(Double, comment="贷款(亿)")
def to_dict(self):
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}

View File

@ -5,13 +5,19 @@ from typing import Optional, List
class AreaDepositsAndLoansInfo(BaseModel):
id: Optional[int]
name: Optional[str]
category: Optional[str]
area_id: Optional[int]
count_type: Optional[str]
count_value: Optional[str]
deposit: Optional[float]
loan: Optional[float]
class AreaDepositsAndLoansAddInfo(BaseModel):
name: str
category: str
area_id: int
count_type: Optional[str]
count_value: Optional[str]
deposit: Optional[float]
loan: Optional[float]
class AreaDepositsAndLoansAddReq(AreaDepositsAndLoansAddInfo):

View File

@ -9,8 +9,9 @@ class AreaDevelopmentConclusion(common_db.Base):
"""
__tablename__ = "area_development_conclusion"
id = Column(Integer, primary_key=True)
name = Column(String(255), comment="名称", nullable=False)
category = Column(String(255), comment="类别", nullable=False)
area_id = Column(Integer, comment="区域ID")
year = Column(Integer, comment="统计时间")
development_conclusion = Column(Text, comment="发展结论")
def to_dict(self):
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}

View File

@ -5,13 +5,15 @@ from typing import Optional, List
class AreaDevelopmentConclusionInfo(BaseModel):
id: Optional[int]
name: Optional[str]
category: Optional[str]
area_id: Optional[int]
year: Optional[int]
development_conclusion: Optional[str]
class AreaDevelopmentConclusionAddInfo(BaseModel):
name: str
category: str
area_id: int
year: Optional[int]
development_conclusion: Optional[str]
class AreaDevelopmentConclusionAddReq(AreaDevelopmentConclusionAddInfo):

View File

@ -1,6 +1,6 @@
from sqlalchemy.orm import relationship
from Context.common import common_db
from sqlalchemy import Column, Integer, String, ForeignKey, Text, DateTime, func
from sqlalchemy import Column, Integer, Double, String, ForeignKey, Text, DateTime, func
class AreaFiscalRevenue(common_db.Base):
@ -9,8 +9,26 @@ class AreaFiscalRevenue(common_db.Base):
"""
__tablename__ = "area_fiscal_revenue"
id = Column(Integer, primary_key=True)
name = Column(String(255), comment="名称", nullable=False)
category = Column(String(255), comment="类别", nullable=False)
area_id = Column(Integer, comment="名称")
count_type = Column(String(128), comment="区域ID")
count_value = Column(String(128), comment="统计类型")
general_public_budget_income = Column(Double, comment="一般公共预算收入(亿)")
general_public_budget_expenditure = Column(Double, comment="一般公共预算支出(亿)")
transfer_income = Column(Double, comment="转移性收入(亿)")
transfer_expenditure = Column(Double, comment="转移性支出(亿)")
fiscal_revenue = Column(Double, comment="财政收入(亿)")
general_bond_income = Column(Double, comment="一般债券收入(亿)")
general_bond_principal_repayment_expenditure = Column(Double, comment="一般债券还本支出(亿)")
special_bonds_income = Column(Double, comment="专项债券收入(亿)")
principal_repayment_expenditure_of_special_bonds = Column(Double, comment="专项债券还本支出(亿)")
tax_revenue = Column(Double, comment="税收收入(亿)")
transfer_payment_income = Column(Double, comment="转移支付收入(亿)")
fiscal_expenditure = Column(Double, comment="财政支出(亿)")
government_fund_income = Column(Double, comment="政府性基金收入(亿)")
land_transfer_income = Column(Double, comment="土地出让收入(亿)")
government_fund_expenditure = Column(Double, comment="政府性基金支出(亿)")
state_owned_capital_operation_income = Column(Double, comment="国有资本经营收入(亿)")
state_owned_capital_operation_expenditure = Column(Double, comment="国有资本经营支出(亿)")
def to_dict(self):
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}

View File

@ -5,13 +5,49 @@ from typing import Optional, List
class AreaFiscalRevenueInfo(BaseModel):
id: Optional[int]
name: Optional[str]
category: Optional[str]
area_id: Optional[int]
count_type: Optional[str]
count_value: Optional[str]
general_public_budget_income: Optional[float]
general_public_budget_expenditure: Optional[float]
transfer_income: Optional[float]
transfer_expenditure: Optional[float]
fiscal_revenue: Optional[float]
general_bond_income: Optional[float]
general_bond_principal_repayment_expenditure: Optional[float]
special_bonds_income: Optional[float]
principal_repayment_expenditure_of_special_bonds: Optional[float]
tax_revenue: Optional[float]
transfer_payment_income: Optional[float]
fiscal_expenditure: Optional[float]
government_fund_income: Optional[float]
land_transfer_income: Optional[float]
government_fund_expenditure: Optional[float]
state_owned_capital_operation_income: Optional[float]
state_owned_capital_operation_expenditure: Optional[float]
class AreaFiscalRevenueAddInfo(BaseModel):
name: str
category: str
area_id: int
count_type: Optional[str]
count_value: Optional[str]
general_public_budget_income: Optional[float]
general_public_budget_expenditure: Optional[float]
transfer_income: Optional[float]
transfer_expenditure: Optional[float]
fiscal_revenue: Optional[float]
general_bond_income: Optional[float]
general_bond_principal_repayment_expenditure: Optional[float]
special_bonds_income: Optional[float]
principal_repayment_expenditure_of_special_bonds: Optional[float]
tax_revenue: Optional[float]
transfer_payment_income: Optional[float]
fiscal_expenditure: Optional[float]
government_fund_income: Optional[float]
land_transfer_income: Optional[float]
government_fund_expenditure: Optional[float]
state_owned_capital_operation_income: Optional[float]
state_owned_capital_operation_expenditure: Optional[float]
class AreaFiscalRevenueAddReq(AreaFiscalRevenueAddInfo):

View File

@ -12,9 +12,9 @@ class AreaImportAndExport(common_db.Base):
area_id = Column(Integer, comment="区域ID")
count_type = Column(String(128), comment="统计类型")
count_value = Column(String(128), comment="统计时间")
import_and_export_volume = Column(Double, comment="进出口总额(亿)")
export_volume = Column(Double, comment="出口额(亿)")
import_volume = Column(Double, comment="进口额(亿)")
import_and_export_volume = Column(Double, comment="进出口总额(亿)")
export_volume = Column(Double, comment="出口额(亿)")
import_volume = Column(Double, comment="进口额(亿)")
def to_dict(self):
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}

View File

@ -9,8 +9,12 @@ class AreaIndustrialStructure(common_db.Base):
"""
__tablename__ = "area_industrial_structure"
id = Column(Integer, primary_key=True)
name = Column(String(255), comment="名称", nullable=False)
category = Column(String(255), comment="类别", nullable=False)
area_id = Column(Integer, comment="区域ID")
count_type = Column(String(128), comment="统计类型")
count_value = Column(String(128), comment="统计时间")
first_Industry_development = Column(Text, comment="第一产业发展情况")
second_Industry_development = Column(Text, comment="第二产业发展情况")
tertiary_Industry_development = Column(Text, comment="第三产业发展情况")
def to_dict(self):
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}

View File

@ -5,13 +5,21 @@ from typing import Optional, List
class AreaIndustrialStructureInfo(BaseModel):
id: Optional[int]
name: Optional[str]
category: Optional[str]
area_id: Optional[int]
count_type: Optional[str]
count_value: Optional[str]
first_Industry_development: Optional[str]
second_Industry_development: Optional[str]
tertiary_Industry_development: Optional[str]
class AreaIndustrialStructureAddInfo(BaseModel):
name: str
category: str
area_id: int
count_type: Optional[str]
count_value: Optional[str]
first_Industry_development: Optional[str]
second_Industry_development: Optional[str]
tertiary_Industry_development: Optional[str]
class AreaIndustrialStructureAddReq(AreaIndustrialStructureAddInfo):

View File

@ -9,8 +9,11 @@ class AreaMajorProject(common_db.Base):
"""
__tablename__ = "area_major_project"
id = Column(Integer, primary_key=True)
name = Column(String(255), comment="名称", nullable=False)
category = Column(String(255), comment="类别", nullable=False)
area_id = Column(Integer, comment="区域ID")
year = Column(Integer, comment="统计时间")
project_name = Column(String, comment="项目名称")
project_status = Column(String, comment="项目状态")
describe = Column(Text, comment="描述")
def to_dict(self):
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}

View File

@ -5,13 +5,19 @@ from typing import Optional, List
class AreaMajorProjectInfo(BaseModel):
id: Optional[int]
name: Optional[str]
category: Optional[str]
area_id: Optional[int]
year: Optional[int]
project_name: Optional[str]
project_status: Optional[str]
describe: Optional[str]
class AreaMajorProjectAddInfo(BaseModel):
name: str
category: str
area_id: int
year: Optional[int]
project_name: Optional[str]
project_status: Optional[str]
describe: Optional[str]
class AreaMajorProjectAddReq(AreaMajorProjectAddInfo):

View File

@ -1,6 +1,6 @@
from sqlalchemy.orm import relationship
from Context.common import common_db
from sqlalchemy import Column, Integer, String, ForeignKey, Text, DateTime, func
from sqlalchemy import Column, Integer, String, Double, ForeignKey, Text, DateTime, func
class AreaRealEstate(common_db.Base):
@ -9,8 +9,12 @@ class AreaRealEstate(common_db.Base):
"""
__tablename__ = "area_real_estate"
id = Column(Integer, primary_key=True)
name = Column(String(255), comment="名称", nullable=False)
category = Column(String(255), comment="类别", nullable=False)
area_id = Column(Integer, comment="区域ID")
count_type = Column(String(128), comment="统计类型")
count_value = Column(String(128), comment="统计时间")
second_hand_housing_average_price = Column(Integer, comment="二手房平均价格(元/平方米)")
residential_land_floor_price = Column(Integer, comment="住宅土地楼面价(元/平方米)")
new_house_sales_price = Column(Integer, comment="新房销售价格(元/平方米)")
def to_dict(self):
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}

View File

@ -5,13 +5,21 @@ from typing import Optional, List
class AreaRealEstateInfo(BaseModel):
id: Optional[int]
name: Optional[str]
category: Optional[str]
area_id: Optional[str]
count_type: Optional[str]
count_value: Optional[int]
second_hand_housing_average_price: Optional[int]
residential_land_floor_price: Optional[int]
new_house_sales_price: Optional[int]
class AreaRealEstateAddInfo(BaseModel):
name: str
category: str
area_id: str
count_type: Optional[str]
count_value: Optional[int]
second_hand_housing_average_price: Optional[int]
residential_land_floor_price: Optional[int]
new_house_sales_price: Optional[int]
class AreaRealEstateAddReq(AreaRealEstateAddInfo):

View File

@ -1,6 +1,6 @@
from sqlalchemy.orm import relationship
from Context.common import common_db
from sqlalchemy import Column, Integer, String, ForeignKey, Text, DateTime, func
from sqlalchemy import Column, Integer, String, Double, ForeignKey, Text, DateTime, func
class AreaSocialFinancing(common_db.Base):
@ -9,8 +9,19 @@ class AreaSocialFinancing(common_db.Base):
"""
__tablename__ = "area_social_financing"
id = Column(Integer, primary_key=True)
name = Column(String(255), comment="名称", nullable=False)
category = Column(String(255), comment="类别", nullable=False)
area_id = Column(Integer, comment="区域ID")
count_type = Column(String(128), comment="统计类型")
count_value = Column(String(128), comment="统计时间")
social_financing_amount = Column(Double, comment="社会融资规模增量(亿)")
rmb_loan = Column(Double, comment="人民币贷款(亿)")
foreign_currency_loan = Column(Double, comment="外币贷款(亿)")
entrusted_loan = Column(Double, comment="委托贷款(亿)")
trust_loan = Column(Double, comment="信托贷款(亿)")
unconscious_bank_acceptance_bill = Column(Double, comment="未贴现银行承兑汇票(亿)")
corporate_bond = Column(Double, comment="企业债券(亿)")
government_bonds = Column(Double, comment="政府债券(亿)")
non_financial_enterprises_domestic_stock_financing = Column(Double, comment="非金融企业境内股票融资(亿)")
other_financing = Column(Double, comment="其他融资(亿)")
def to_dict(self):
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}

View File

@ -5,13 +5,35 @@ from typing import Optional, List
class AreaSocialFinancingInfo(BaseModel):
id: Optional[int]
name: Optional[str]
category: Optional[str]
area_id: Optional[int]
count_type: Optional[str]
count_value: Optional[str]
social_financing_amount: Optional[float]
rmb_loan: Optional[float]
foreign_currency_loan: Optional[float]
entrusted_loan: Optional[float]
trust_loan: Optional[float]
unconscious_bank_acceptance_bill: Optional[float]
corporate_bond: Optional[float]
government_bonds: Optional[float]
non_financial_enterprises_domestic_stock_financing: Optional[float]
other_financing: Optional[float]
class AreaSocialFinancingAddInfo(BaseModel):
name: str
category: str
area_id: int
count_type: Optional[str]
count_value: Optional[str]
social_financing_amount: Optional[float]
rmb_loan: Optional[float]
foreign_currency_loan: Optional[float]
entrusted_loan: Optional[float]
trust_loan: Optional[float]
unconscious_bank_acceptance_bill: Optional[float]
corporate_bond: Optional[float]
government_bonds: Optional[float]
non_financial_enterprises_domestic_stock_financing: Optional[float]
other_financing: Optional[float]
class AreaSocialFinancingAddReq(AreaSocialFinancingAddInfo):

View File

@ -9,8 +9,9 @@ class AreaSurveyConclusion(common_db.Base):
"""
__tablename__ = "area_survey_conclusion"
id = Column(Integer, primary_key=True)
name = Column(String(255), comment="名称", nullable=False)
category = Column(String(255), comment="类别", nullable=False)
area_id = Column(Integer, comment="区域ID")
year = Column(Integer, comment="调研年份")
conclusion = Column(Text, comment="结论")
def to_dict(self):
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}

View File

@ -16,12 +16,11 @@ Context/ #全局服务
jurigged/ #热更新库
Mods/ #业务模块
- BasicInformation/ #基础信息
- CreditRisks/ #信用风险
- CommonInformation/ #共用数据
- EditRecord/ #编辑记录
- FinancialStatements/ #财务报表
- IndepthResearch/ #深度调研
- Operation/ #经营情况
- SubjectRating/ #主体评级
- OtherInformation/ #补充信息
- RegionalEconomies/ #区域经济
- User/ #用户模块
Utils/ #工具库
debug.py #项目开发启动入口

View File

@ -24,6 +24,40 @@ class RecordTypeId(Enum):
CompanyJudicialCase = 11
CompanyMainBusiness = 12
AreaIndexMain = 13
AreaGdp = 14
AreaIndustry = 15
AreaInvest = 16
AreaImportAndExport = 17
AreaLivelihood = 18
AreaDepositsAndLoans = 19
AreaFiscalRevenue = 20
AreaDebt = 21
AreaRealEstate = 22
AreaIndustrialStructure = 23
AreaMajorProject = 24
AreaDevelopmentConclusion = 25
AreaBond = 26
AreaSocialFinancing = 27
AreaSurveyConclusion = 28
# 13 区域经济 区域索引 area_index_main
# 14 区域经济 区域GDP area_gdp
# 15 区域经济 区域工业 area_industry
# 16 区域经济 区域投资 area_invest
# 17 区域经济 区域进出口 area_import_and_export
# 18 区域经济 区域民生 area_livelihood
# 19 区域经济 区域存贷款 area_deposits_and_loans
# 20 区域经济 区域财政收支 area_fiscal_revenue
# 21 区域经济 区域债务 area_debt
# 22 区域经济 区域房地产 area_real_estate
# 23 区域经济 区域产业结构 area_industrial_structure
# 24 区域经济 区域重大项目 area_major_project
# 25 区域经济 区域发展结论 area_development_conclusion
# 26 区域经济 区域债券发行情况 area_bond
# 27 区域经济 区域社会融资 area_social_financing
# 28 区域经济 区域调研结论 area_survey_conclusion
def get_update_data(before_data: dict, after_data: dict):
"""