编写财务报表的增删改查
This commit is contained in:
parent
c0f6e43342
commit
8307a1e74f
|
@ -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 = ""
|
||||
|
||||
|
|
|
@ -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():
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
#######################
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
||||
|
||||
################
|
|
@ -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
|
|
@ -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)
|
||||
|
||||
#########
|
|
@ -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
|
||||
|
||||
#######################
|
|
@ -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
|
||||
|
||||
|
||||
################
|
|
@ -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
|
|
@ -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)
|
||||
|
||||
#########
|
|
@ -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
|
||||
|
||||
#######################
|
|
@ -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)
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -16,12 +16,11 @@ Context/ #全局服务
|
|||
jurigged/ #热更新库
|
||||
Mods/ #业务模块
|
||||
- BasicInformation/ #基础信息
|
||||
- CreditRisks/ #信用风险
|
||||
- CommonInformation/ #共用数据
|
||||
- EditRecord/ #编辑记录
|
||||
- FinancialStatements/ #财务报表
|
||||
- IndepthResearch/ #深度调研
|
||||
- Operation/ #经营情况
|
||||
- SubjectRating/ #主体评级
|
||||
- OtherInformation/ #补充信息
|
||||
- RegionalEconomies/ #区域经济
|
||||
- User/ #用户模块
|
||||
Utils/ #工具库
|
||||
debug.py #项目开发启动入口
|
||||
|
|
|
@ -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):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue