From 8307a1e74fe9f357b7b797147f1af7e1ab379a5a Mon Sep 17 00:00:00 2001 From: wcq <744800102@qq.com> Date: Tue, 21 Mar 2023 14:34:38 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E5=86=99=E8=B4=A2=E5=8A=A1=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E7=9A=84=E5=A2=9E=E5=88=A0=E6=94=B9=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Config/common.ini | 6 +- .../Mods/CompanyFinance/Crud.py | 32 +- .../Mods/CompanyFinance/Models.py | 16 - .../Mods/CompanyFinance/Router.py | 16 +- .../Mods/CompanyFinance/Schemas.py | 48 +-- .../Mods/CompanyFinance/tabel_config.json | 349 ++++++++++++++++++ .../Mods/CompanyFinancialStatement/Crud.py | 57 +++ .../Mods/CompanyFinancialStatement/Models.py | 21 ++ .../Mods/CompanyFinancialStatement/Router.py | 43 +++ .../Mods/CompanyFinancialStatement/Schemas.py | 69 ++++ .../Mods/CompanyRestrictedAssets/Crud.py | 57 +++ .../Mods/CompanyRestrictedAssets/Models.py | 19 + .../Mods/CompanyRestrictedAssets/Router.py | 43 +++ .../Mods/CompanyRestrictedAssets/Schemas.py | 65 ++++ Mods/OtherInformation/Router.py | 6 +- .../RegionalEconomies/Mods/AreaDebt/Models.py | 18 +- .../Mods/AreaDebt/Schemas.py | 32 +- .../Mods/AreaDepositsAndLoans/Models.py | 9 +- .../Mods/AreaDepositsAndLoans/Schemas.py | 14 +- .../Mods/AreaDevelopmentConclusion/Models.py | 5 +- .../Mods/AreaDevelopmentConclusion/Schemas.py | 10 +- .../Mods/AreaFiscalRevenue/Models.py | 24 +- .../Mods/AreaFiscalRevenue/Schemas.py | 44 ++- .../Mods/AreaImportAndExport/Models.py | 6 +- .../Mods/AreaIndustrialStructure/Models.py | 8 +- .../Mods/AreaIndustrialStructure/Schemas.py | 16 +- .../Mods/AreaMajorProject/Models.py | 7 +- .../Mods/AreaMajorProject/Schemas.py | 14 +- .../Mods/AreaRealEstate/Models.py | 10 +- .../Mods/AreaRealEstate/Schemas.py | 16 +- .../Mods/AreaSocialFinancing/Models.py | 17 +- .../Mods/AreaSocialFinancing/Schemas.py | 30 +- .../Mods/AreaSurveyConclusion/Models.py | 5 +- README.md | 7 +- Utils/RecordUtils.py | 34 ++ 35 files changed, 1031 insertions(+), 142 deletions(-) create mode 100644 Mods/OtherInformation/Mods/CompanyFinance/tabel_config.json create mode 100644 Mods/OtherInformation/Mods/CompanyFinancialStatement/Crud.py create mode 100644 Mods/OtherInformation/Mods/CompanyFinancialStatement/Models.py create mode 100644 Mods/OtherInformation/Mods/CompanyFinancialStatement/Router.py create mode 100644 Mods/OtherInformation/Mods/CompanyFinancialStatement/Schemas.py create mode 100644 Mods/OtherInformation/Mods/CompanyRestrictedAssets/Crud.py create mode 100644 Mods/OtherInformation/Mods/CompanyRestrictedAssets/Models.py create mode 100644 Mods/OtherInformation/Mods/CompanyRestrictedAssets/Router.py create mode 100644 Mods/OtherInformation/Mods/CompanyRestrictedAssets/Schemas.py diff --git a/Config/common.ini b/Config/common.ini index 8686914..1aba711 100644 --- a/Config/common.ini +++ b/Config/common.ini @@ -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 = "" diff --git a/Mods/OtherInformation/Mods/CompanyFinance/Crud.py b/Mods/OtherInformation/Mods/CompanyFinance/Crud.py index 8341365..6041253 100644 --- a/Mods/OtherInformation/Mods/CompanyFinance/Crud.py +++ b/Mods/OtherInformation/Mods/CompanyFinance/Crud.py @@ -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(): diff --git a/Mods/OtherInformation/Mods/CompanyFinance/Models.py b/Mods/OtherInformation/Mods/CompanyFinance/Models.py index 0d2062c..8b13789 100644 --- a/Mods/OtherInformation/Mods/CompanyFinance/Models.py +++ b/Mods/OtherInformation/Mods/CompanyFinance/Models.py @@ -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] diff --git a/Mods/OtherInformation/Mods/CompanyFinance/Router.py b/Mods/OtherInformation/Mods/CompanyFinance/Router.py index 6d72a13..6bc3663 100644 --- a/Mods/OtherInformation/Mods/CompanyFinance/Router.py +++ b/Mods/OtherInformation/Mods/CompanyFinance/Router.py @@ -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) diff --git a/Mods/OtherInformation/Mods/CompanyFinance/Schemas.py b/Mods/OtherInformation/Mods/CompanyFinance/Schemas.py index 96d0a05..7d8f9cd 100644 --- a/Mods/OtherInformation/Mods/CompanyFinance/Schemas.py +++ b/Mods/OtherInformation/Mods/CompanyFinance/Schemas.py @@ -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 ####################### diff --git a/Mods/OtherInformation/Mods/CompanyFinance/tabel_config.json b/Mods/OtherInformation/Mods/CompanyFinance/tabel_config.json new file mode 100644 index 0000000..e9d0a17 --- /dev/null +++ b/Mods/OtherInformation/Mods/CompanyFinance/tabel_config.json @@ -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" + } +} \ No newline at end of file diff --git a/Mods/OtherInformation/Mods/CompanyFinancialStatement/Crud.py b/Mods/OtherInformation/Mods/CompanyFinancialStatement/Crud.py new file mode 100644 index 0000000..bca1aa4 --- /dev/null +++ b/Mods/OtherInformation/Mods/CompanyFinancialStatement/Crud.py @@ -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 + + +################ \ No newline at end of file diff --git a/Mods/OtherInformation/Mods/CompanyFinancialStatement/Models.py b/Mods/OtherInformation/Mods/CompanyFinancialStatement/Models.py new file mode 100644 index 0000000..dfdfdf1 --- /dev/null +++ b/Mods/OtherInformation/Mods/CompanyFinancialStatement/Models.py @@ -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 diff --git a/Mods/OtherInformation/Mods/CompanyFinancialStatement/Router.py b/Mods/OtherInformation/Mods/CompanyFinancialStatement/Router.py new file mode 100644 index 0000000..b47fadc --- /dev/null +++ b/Mods/OtherInformation/Mods/CompanyFinancialStatement/Router.py @@ -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) + +######### diff --git a/Mods/OtherInformation/Mods/CompanyFinancialStatement/Schemas.py b/Mods/OtherInformation/Mods/CompanyFinancialStatement/Schemas.py new file mode 100644 index 0000000..85bbe15 --- /dev/null +++ b/Mods/OtherInformation/Mods/CompanyFinancialStatement/Schemas.py @@ -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 + +####################### diff --git a/Mods/OtherInformation/Mods/CompanyRestrictedAssets/Crud.py b/Mods/OtherInformation/Mods/CompanyRestrictedAssets/Crud.py new file mode 100644 index 0000000..0319f53 --- /dev/null +++ b/Mods/OtherInformation/Mods/CompanyRestrictedAssets/Crud.py @@ -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 + + +################ \ No newline at end of file diff --git a/Mods/OtherInformation/Mods/CompanyRestrictedAssets/Models.py b/Mods/OtherInformation/Mods/CompanyRestrictedAssets/Models.py new file mode 100644 index 0000000..e8c13d2 --- /dev/null +++ b/Mods/OtherInformation/Mods/CompanyRestrictedAssets/Models.py @@ -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 diff --git a/Mods/OtherInformation/Mods/CompanyRestrictedAssets/Router.py b/Mods/OtherInformation/Mods/CompanyRestrictedAssets/Router.py new file mode 100644 index 0000000..5817ea3 --- /dev/null +++ b/Mods/OtherInformation/Mods/CompanyRestrictedAssets/Router.py @@ -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) + +######### diff --git a/Mods/OtherInformation/Mods/CompanyRestrictedAssets/Schemas.py b/Mods/OtherInformation/Mods/CompanyRestrictedAssets/Schemas.py new file mode 100644 index 0000000..b28bbcb --- /dev/null +++ b/Mods/OtherInformation/Mods/CompanyRestrictedAssets/Schemas.py @@ -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 + +####################### diff --git a/Mods/OtherInformation/Router.py b/Mods/OtherInformation/Router.py index 80f7c25..6b85692 100644 --- a/Mods/OtherInformation/Router.py +++ b/Mods/OtherInformation/Router.py @@ -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) diff --git a/Mods/RegionalEconomies/Mods/AreaDebt/Models.py b/Mods/RegionalEconomies/Mods/AreaDebt/Models.py index f66bfc0..f4f6fa9 100644 --- a/Mods/RegionalEconomies/Mods/AreaDebt/Models.py +++ b/Mods/RegionalEconomies/Mods/AreaDebt/Models.py @@ -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} diff --git a/Mods/RegionalEconomies/Mods/AreaDebt/Schemas.py b/Mods/RegionalEconomies/Mods/AreaDebt/Schemas.py index 581a7f9..bf44418 100644 --- a/Mods/RegionalEconomies/Mods/AreaDebt/Schemas.py +++ b/Mods/RegionalEconomies/Mods/AreaDebt/Schemas.py @@ -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): diff --git a/Mods/RegionalEconomies/Mods/AreaDepositsAndLoans/Models.py b/Mods/RegionalEconomies/Mods/AreaDepositsAndLoans/Models.py index 9521801..b3bdf21 100644 --- a/Mods/RegionalEconomies/Mods/AreaDepositsAndLoans/Models.py +++ b/Mods/RegionalEconomies/Mods/AreaDepositsAndLoans/Models.py @@ -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} diff --git a/Mods/RegionalEconomies/Mods/AreaDepositsAndLoans/Schemas.py b/Mods/RegionalEconomies/Mods/AreaDepositsAndLoans/Schemas.py index f2d3abf..1d6a67e 100644 --- a/Mods/RegionalEconomies/Mods/AreaDepositsAndLoans/Schemas.py +++ b/Mods/RegionalEconomies/Mods/AreaDepositsAndLoans/Schemas.py @@ -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): diff --git a/Mods/RegionalEconomies/Mods/AreaDevelopmentConclusion/Models.py b/Mods/RegionalEconomies/Mods/AreaDevelopmentConclusion/Models.py index 6569e48..e799f36 100644 --- a/Mods/RegionalEconomies/Mods/AreaDevelopmentConclusion/Models.py +++ b/Mods/RegionalEconomies/Mods/AreaDevelopmentConclusion/Models.py @@ -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} diff --git a/Mods/RegionalEconomies/Mods/AreaDevelopmentConclusion/Schemas.py b/Mods/RegionalEconomies/Mods/AreaDevelopmentConclusion/Schemas.py index 3fb1fbe..801faea 100644 --- a/Mods/RegionalEconomies/Mods/AreaDevelopmentConclusion/Schemas.py +++ b/Mods/RegionalEconomies/Mods/AreaDevelopmentConclusion/Schemas.py @@ -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): diff --git a/Mods/RegionalEconomies/Mods/AreaFiscalRevenue/Models.py b/Mods/RegionalEconomies/Mods/AreaFiscalRevenue/Models.py index 5ecd94e..e751c3a 100644 --- a/Mods/RegionalEconomies/Mods/AreaFiscalRevenue/Models.py +++ b/Mods/RegionalEconomies/Mods/AreaFiscalRevenue/Models.py @@ -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} diff --git a/Mods/RegionalEconomies/Mods/AreaFiscalRevenue/Schemas.py b/Mods/RegionalEconomies/Mods/AreaFiscalRevenue/Schemas.py index 1268419..beb1cf7 100644 --- a/Mods/RegionalEconomies/Mods/AreaFiscalRevenue/Schemas.py +++ b/Mods/RegionalEconomies/Mods/AreaFiscalRevenue/Schemas.py @@ -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): diff --git a/Mods/RegionalEconomies/Mods/AreaImportAndExport/Models.py b/Mods/RegionalEconomies/Mods/AreaImportAndExport/Models.py index a57a707..2a5865c 100644 --- a/Mods/RegionalEconomies/Mods/AreaImportAndExport/Models.py +++ b/Mods/RegionalEconomies/Mods/AreaImportAndExport/Models.py @@ -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} diff --git a/Mods/RegionalEconomies/Mods/AreaIndustrialStructure/Models.py b/Mods/RegionalEconomies/Mods/AreaIndustrialStructure/Models.py index 73f99c3..d07c0a7 100644 --- a/Mods/RegionalEconomies/Mods/AreaIndustrialStructure/Models.py +++ b/Mods/RegionalEconomies/Mods/AreaIndustrialStructure/Models.py @@ -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} diff --git a/Mods/RegionalEconomies/Mods/AreaIndustrialStructure/Schemas.py b/Mods/RegionalEconomies/Mods/AreaIndustrialStructure/Schemas.py index 2f1632f..603d326 100644 --- a/Mods/RegionalEconomies/Mods/AreaIndustrialStructure/Schemas.py +++ b/Mods/RegionalEconomies/Mods/AreaIndustrialStructure/Schemas.py @@ -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): diff --git a/Mods/RegionalEconomies/Mods/AreaMajorProject/Models.py b/Mods/RegionalEconomies/Mods/AreaMajorProject/Models.py index a12b93c..12095d2 100644 --- a/Mods/RegionalEconomies/Mods/AreaMajorProject/Models.py +++ b/Mods/RegionalEconomies/Mods/AreaMajorProject/Models.py @@ -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} diff --git a/Mods/RegionalEconomies/Mods/AreaMajorProject/Schemas.py b/Mods/RegionalEconomies/Mods/AreaMajorProject/Schemas.py index 1ef8ec9..6643ea9 100644 --- a/Mods/RegionalEconomies/Mods/AreaMajorProject/Schemas.py +++ b/Mods/RegionalEconomies/Mods/AreaMajorProject/Schemas.py @@ -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): diff --git a/Mods/RegionalEconomies/Mods/AreaRealEstate/Models.py b/Mods/RegionalEconomies/Mods/AreaRealEstate/Models.py index 8483205..e3982d1 100644 --- a/Mods/RegionalEconomies/Mods/AreaRealEstate/Models.py +++ b/Mods/RegionalEconomies/Mods/AreaRealEstate/Models.py @@ -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} diff --git a/Mods/RegionalEconomies/Mods/AreaRealEstate/Schemas.py b/Mods/RegionalEconomies/Mods/AreaRealEstate/Schemas.py index c1e9b56..bf598f0 100644 --- a/Mods/RegionalEconomies/Mods/AreaRealEstate/Schemas.py +++ b/Mods/RegionalEconomies/Mods/AreaRealEstate/Schemas.py @@ -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): diff --git a/Mods/RegionalEconomies/Mods/AreaSocialFinancing/Models.py b/Mods/RegionalEconomies/Mods/AreaSocialFinancing/Models.py index 1bb871e..c610ce1 100644 --- a/Mods/RegionalEconomies/Mods/AreaSocialFinancing/Models.py +++ b/Mods/RegionalEconomies/Mods/AreaSocialFinancing/Models.py @@ -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} diff --git a/Mods/RegionalEconomies/Mods/AreaSocialFinancing/Schemas.py b/Mods/RegionalEconomies/Mods/AreaSocialFinancing/Schemas.py index 88971c0..4c9de1f 100644 --- a/Mods/RegionalEconomies/Mods/AreaSocialFinancing/Schemas.py +++ b/Mods/RegionalEconomies/Mods/AreaSocialFinancing/Schemas.py @@ -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): diff --git a/Mods/RegionalEconomies/Mods/AreaSurveyConclusion/Models.py b/Mods/RegionalEconomies/Mods/AreaSurveyConclusion/Models.py index 5666fdf..bc85adb 100644 --- a/Mods/RegionalEconomies/Mods/AreaSurveyConclusion/Models.py +++ b/Mods/RegionalEconomies/Mods/AreaSurveyConclusion/Models.py @@ -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} diff --git a/README.md b/README.md index 64a8684..60fc1ba 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,11 @@ Context/ #全局服务 jurigged/ #热更新库 Mods/ #业务模块 - BasicInformation/ #基础信息 - - CreditRisks/ #信用风险 + - CommonInformation/ #共用数据 - EditRecord/ #编辑记录 - - FinancialStatements/ #财务报表 - IndepthResearch/ #深度调研 - - Operation/ #经营情况 - - SubjectRating/ #主体评级 + - OtherInformation/ #补充信息 + - RegionalEconomies/ #区域经济 - User/ #用户模块 Utils/ #工具库 debug.py #项目开发启动入口 diff --git a/Utils/RecordUtils.py b/Utils/RecordUtils.py index f99086f..6b04831 100644 --- a/Utils/RecordUtils.py +++ b/Utils/RecordUtils.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): """